找女朋友問題
· 如果能夠後悔 o(n)
· 如果不能後悔
priority queue 乙個任務的密度=重要程度/完成時間(始終完成最緊迫的工作)
kelly formula 凱利公式
game theory 博弈論
五個**的模板(手寫)
1、遞迴的終止條件
# 遞迴
defrecurison
(level, param1, param2)
:# recursion terminator
if level > max_level:
print_result
return
# process logic in current level
process_data(lecel,data...
)# drill down 可能是一行也可能是兩行
self.recursion(level+
1, p1,..
.)# reverse the current level status
recerse.state(level)
bfs
def
bfs(graph, start, end)
: queue =
[start]
) visited.add(start)
while queue:
node = queue.pop(
)# 當前節點彈出
visited.add(node)
process(node)
nodes = generate_related_nodes(note)
queue.push(nodes)
# other processinf work
二分法
left, right =0,
len(array)-1
while left <= right:
mid = left +
(right - left)/2
if array[mid]
== target:
# find the target!
break
orreturn result
elif array[mid]
< target:
left = mid +
1else
: right = mid -
1
動態規劃
# 狀態定義
dp = new int
[m +1]
[n +1]
# 初始狀態
dp[0][
0]= x;
dp[0][
1]= y;
# dp狀態的推導
for i =
0; i <= n; i ++}
}return dp[m]
[n]# 最優解
反轉鍊錶
前面的賦值的前半部分不會影響後半部分的值
def
reverselist
(self, head)
: cur, prev = head,
none
while cur:
cur.
next
, prev, cur = prev, cur, cur.
next
return prev
兩兩鍊錶交換相鄰元素
def
(self, head)
: result = listnode(0)
pre, pre.
next
= result, head
while pre.
next
and pre.
next
.next
: a = pre.
next
b = a.
next
pre.
next
, b.
next
, a.
next
= b, a, b.
next
pre = a
return result.
next
持續練習 + 精深練習
1、除了做熟悉和會做的題目之外,去刻意練習自己不熟悉的演算法和資料結構
2、做過的題目後續要返回再複習
面試答題四件套
1、搞清楚題目到底要幹嘛(詢問題目細節,邊界條件,可能的極端錯誤情況)
2、可能的解決方法(所有可能的解法都和面試官溝通一遍)
時間複雜度,空間複雜度
最優解3、寫**
4、測試用例
斐波拉契數列
演算法面試通關40講總結
昨日,我看完了演算法面試40講,這門課程的學習一直斷斷續續。費了九牛二虎之力,在不斷回溯和反覆當中,結束了這一門課程。演算法是解決問題的方法,特別是計算機解決問題的方法。廣義上,演算法就是指人們處理問題的思路,而在計算機裡,便是乙個個解決實際問題的思路的抽象概括。各個資料結構也是對演算法的輔助。演算...
40講系列7 貪心演算法
貪心 greedy 演算法 在對問題求解時,總是做出在當前看來是最好的選擇。由於貪心演算法每一次操作都需要取最大值或最小值,所以通常需要對陣列排序。適用greedy 的場景 問題能夠分成子問題來解決,子問題的最優解能遞推到最終問題的最優解。如果不能使用貪心演算法,只需要舉出反例即可。貪心選擇性質的證...
演算法面試通關40講 23 面試題 求眾數
給定乙個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在眾數。示例 1 輸入 3,2,3 輸出 3示例 2 輸入 2,2,1,1,1,2,2 輸出 2sorting class solution class solutio...