演算法40講

2021-10-20 02:09:38 字數 2568 閱讀 6639

找女朋友問題

· 如果能夠後悔 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...