Leetcode演算法總結

2021-10-02 15:09:13 字數 699 閱讀 2434

應用

1.給定乙個有序遞增陣列,在陣列中找到滿足條件的兩個數,使得這兩個數的和為某一給定的值。如果有多對數,只輸出一對即可。

2.hoare的雙向掃瞄快速劃分法。

3.奇偶排序

4.求單鏈表的中間元素。

異構指標

一般是針對 array 型別的題目。array 當中有兩類元素,他們 之間 或者 各自 有某種順序。我們維護兩個 pointer,每個 pointer 負責一種一類,這樣就能在保證順序的情況下,進行某種操作。

快慢指標

快慢指標一般用於鍊錶。為什麼鍊錶的問題,很多都要用到快慢指標呢?因為鍊錶的 idexing 是很弱的,每次只能看到自己的 next(非常「短視」)。通過快慢指標,我們可以「之後」或者「之前」的一些元素,實際上是增加了「視野」。

遞迴就是有去(遞去)有回(歸來),如下圖所示。「有去」是指:遞迴問題必須可以分解為若干個規模較小,與原問題形式相同的子問題,這些子問題可以用相同的解題思路來解決,就像上面例子中的鑰匙可以開啟後面所有門上的鎖一樣;「有回」是指 : 這些問題的演化過程是乙個從大到小,由近及遠的過程,並且會有乙個明確的終點(臨界點),一旦到達了這個臨界點,就不用再往更小、更遠的地方走下去。最後,從這個臨界點開始,原路返回到原點,原問題解決。

三個要素:

明確遞迴終止條件;

給出遞迴終止時的處理辦法;

提取重複的邏輯,縮小問題規模。

應用場景:

LeetCode 演算法總結

array 矩陣 hash table 雜湊 linked list 鍊錶 math 數學 two pointers 雙指標 sting 字串 divide and conquer 分治 binary search 二分 dynamic programming 動態規劃 backtracking 回...

LeetCode 回溯演算法總結

全排列 class solution void f vectorint res,vector int nums,vector int s,vector int visited for int i 0 isize i 子集 class solution void f vectorint result,...

leetcode演算法總結 map儲存資料

我們之所以使用map進行資料的儲存,主要是因為 map的查詢時間複雜度為o 1 而陣列遍歷的查詢時間複雜度為o n 所以我們可以使用空間換時間,在一些情況中使用map來代替陣列遍歷進行查詢。map是基於紅黑樹實現。紅黑樹作為一種自平衡二叉樹,保障了良好的最壞情況執行時間,即它可以做到在o log n...