Norman's Note 諾曼筆記

Norman's Note 諾曼筆記

Leetcode 筆記

先想出暴力解,再優化

如果運算到 10 的 7 次方,我們會說這個運算很勉強了,通常都是要 10 的 6 次方以下。這時候我們會需要看時間複雜度,如何從暴力解法改善成更好的作法,讓運算次數降低。喔對了,加減常數、或乘以某個常數通常沒那麼重要,像是次方這種會急遽升高運算時間的要優先考慮。

策略

  • 如果解不出來就看答案、把 pattern 學起來,以後拿來用

Pattern

  • 把計算結果存在 Dictionary 裡面,需要重複計算的時候去查它

專有名詞

時間複雜度

算出來所需要跑的次數,常見 O(n), O(n2)

空間複雜度

算出來所需要的記憶體(變數使用多寡),常見 O(1), O(n), O(n2)

其他

// 逆序數對

// 狀態轉移方程
// DP
// 背包問題

// 地圖問題 螞蟻 can visited map queue
// BFS
// DFS
// 最短步數

// O(log n)
// O(n)
// O(n log n)
// O(n^2)

Google's Secret Programming Challenge

你可能會在搜尋某個寫程式的關鍵字時候,看到凹進去的頁面,然後看到 Google's Secret Programming Challenge,這是 Google hire 的一種方式,如果你能做完全部 5 級 Levels 將會被邀請去面試。