剪繩子最大
把繩子大小分為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 並計算時間複雜度 程式設計輸出任意正整...