演算法 題解總結

2021-10-10 10:45:14 字數 1197 閱讀 8756

剪繩子最大

把繩子大小分為3,以及總長度餘3的大小(具體看題意)
滑動視窗

什麼是滑動視窗?

其實就是乙個佇列,比如例題中的 abcabcbb,進入這個佇列(視窗)為 abc 滿足題目要求,當再進入 a,佇列變成了 abca,這時候不滿足要求。所以,我們要移動這個佇列!

如何移動?

我們只要把佇列的左邊的元素移出就行了,直到滿足題目要求!

一直維持這樣的佇列,找出佇列出現最長的長度時候,求出解!

時間複雜度:o(n)

回溯

遍歷,遞迴(注意出口條件),可以輕易寫出完整的回溯演算法。

根據回溯法框架解題

def backtrack(路徑, 選擇列表):

if 滿足結束條件:

result.add(路徑)

return

for 選擇 in 選擇列表:

做選擇backtrack(路徑, 選擇列表)

撤銷選擇

動態規劃

找出之間的關係,理清區域性與整體的關係,

(1)狀態

理解狀態的定義的由來、會列出狀態轉移方程;

「狀態轉移方程」是原始問題的不同規模的子問題的聯絡。即大問題的最優解如何由小問題的最優解得到。

(2)思考狀態轉移方程

歸納「狀態轉移方程」是乙個很靈活的事情,通常是具體問題具體分析;

「動態規劃」方法依然是「空間換時間」思想的體現,常見的解決問題的過程很像在「填表」

(3)思考初始化

初始化是非常重要的,一步錯,步步錯。初始化狀態一定要設定對,才可能得到正確的結果。

(4)思考輸出

可能最後乙個狀態,也可能是綜合之前所有計算過的狀態。

(5)思考優化空間

貪心演算法

貪心演算法(又稱貪婪演算法)是指,在對問題求解時,

總是做出在當前看來是最好的選擇。也就是說,

不從整體最優上加以考慮,演算法得到的是在某種意義上的區域性最優解。

通過區域性最優解得到全域性最優解。

...

雙指標

快慢指標,鍊錶操作...
搜尋

bfs

dfs回溯

持續更新…

總結 題解(2)

實際上,我乙個大周總結的東西並不多,這個大周的刷題量還算可以,大部分就在鞏固以前的知識,bfs和dfs也破天荒地地懂了一些 我也搞不懂我是怎麼聽懂的 dp就比較蒙蔽了 我也不知道為什麼,dp一直是很蒙蔽,dfs和bfs也不是很熟,所以,我接著寫某些題的題解,我還想說的是,千萬不能手賤 讀入a,b,c...

SQL題解總結

1.按排名取奇數 解題思路 判斷是否是奇數的依據 一組n個資料 a 中的某乙個數,a組資料中有m個數大於等於這個數,排序後則這個數的序號是m 題目要取排名為奇數的資料,字母排序規律是a b c.但是ascii碼實際上a答案 select e1.first name from employees e1...

演算法題解答

乙個二叉樹有2016個節點,最多有n個節點有2個子節點,求n並給出求導過程 給出一組一維座標如 ai,bi double型 程式設計算出覆蓋的長度,如 3,4 7,9 覆蓋長度為4 3 9 7 3 已知乙個一維陣列a,程式設計找出a i a i 1 a i 2 並計算時間複雜度 程式設計輸出任意正整...