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 將會被邀請去面試。