1. 程式人生 > >【leetcode】總結

【leetcode】總結

1.Hash表的使用
1.two sum
https://blog.csdn.net/AXIMI/article/details/82729883
two sum就是從一個數組裡面(無序)找到2個數的和是我們想要的目標。
可以建立一個Hash表,其中鍵是數字,值是數字的位置。然後設定迴圈看map中是否contain target-nums[i]這個鍵即可。迴圈的位置是從第一個數到最後一個數,不用擔心會重複計算, 因為一旦找到了合適的一組數就直接break出去。


2.滑動視窗
3.longest substring with repeating charaters
https://blog.csdn.net/AXIMI/article/details/82827236


這道題的意思是找到一串字串中沒有重複字母的最大子串。
首先設定兩個指標i,k,j
以i為基礎,j一個一個右移,每移一位,k從j-1開始往前判斷是否有字元和j重複
如果有重複的話,i的位置更新到k+1,j繼續前移
如果沒有重複的字元的話,看需不需要更新最長子串的長度和起始位置

53.Maximum SubArray
https://blog.csdn.net/AXIMI/article/details/84250739
這道題的意思是,給一串數字,求這串數字裡面有最大和的連續數字子串。
就是維護一個滑動視窗,和一個values陣列。加入當前指標指向的是位置i,則如果values[i-1]小於0就直接捨棄,如果values[i-1]是大於0的就保留。


3.歸併排序
4.找到兩個陣列的中位數
https://blog.csdn.net/AXIMI/article/details/82827693
這道題用到了歸併排序的思想,建立一個新的陣列將這兩個陣列中的數字都儲存在一起,然後再找中位數


4.貪心演算法
11 找到能裝最多水的兩根柱子
https://blog.csdn.net/AXIMI/article/details/82942420
這道題的解法是,設定兩個指標分別指向最左和最右的兩根柱子,如果左柱高於右柱,
右柱往中間走,否則左柱往中間走;
左右柱子每次移動都要計算當前的容器容量,然後看是不是需要更新


4.DFS+回溯
https://blog.csdn.net/AXIMI/article/details/83473015


這道題是解9*9的數獨題。
主要思想是DFS+回溯,先找到坑,然後從1到9依次填進去,首先看滿不滿足行列子塊條件,滿足的話在這個基礎上繼續填坑,如果後面發現坑填不了了,就回溯到上一個。

17.Letter Combinations of a Phone Numbers
這道題的意思就是,一個手機有3*3的鍵盤,每個數字都代表了不同的字母,按下不同數字可以組合出不同的字母。
https://blog.csdn.net/AXIMI/article/details/83988986

51 .N Queens
https://mp.csdn.net/mdeditor/84024090
這道題是求N*N的棋盤上擺放N個皇后,要求所有的皇后不在同行不在同列不在同一個對角線。
解題思路是一行一行地填皇后,如果當前行的當前位置是正確的就遞迴填下一行,否則就移到當前行的下一個位置。


5.多邊界問題
41.First Missing Positive
https://blog.csdn.net/AXIMI/article/details/83582287
這道題的意思是找到陣列中最小的缺失的整數,比如
[-1,0,2,3]是1;
[4,5,6]也是1;
[-4,-3,-2]也是1;
[1,2,4,5]是2
解題的基本思路是首先要排序(歸併),然後去除重複的數值;
最後找到第一個非負數,然後從這個非負數開始,用折半查抄看哪一半的數是不連續的;
這個題不難,就是需要考慮的邊界,一些細節的操作比較多


6.動態規劃(DP)
72.Edit Distance
這道題的意思是計算要多少步才能將一個字串轉換為另外一個字串,比如要多少步才能將horse轉化為ors。(能採取的步驟包括增加一個字母、減少一個字母和替換一個字母)。
做法就是維護一張二維DP表。
https://blog.csdn.net/AXIMI/article/details/84144759

62.63 Unique Path && Unique Path II
就是簡單DP


7.單調棧(monotone stack)
42.traping rain water
這道題的意思就是一些不同高度的柱子可以積累多少雨水的問題
使用減單調棧,棧中的元素是柱子的下標而不是高度。當下一個柱子比棧頂的柱子低時入棧,否則出棧。出棧的時候先計算高度差,再利用柱子之間的距離(已記錄在棧元素中)來計算當前這幾根柱子可以積累的雨水。
https://blog.csdn.net/AXIMI/article/details/83617217


8.找規律
59.Spiral Matrix && Spiral Matrix II
https://blog.csdn.net/AXIMI/article/details/84255343
https://blog.csdn.net/AXIMI/article/details/84287370
第一個問題是給你一個矩陣,然後求這個矩陣中的數字按照螺旋輸出應該怎麼輸出;第二個問題是利用數字1—n^2,填充一個n*n的矩陣。

60.Permutation Sequence
https://blog.csdn.net/AXIMI/article/details/84288528
這道題是讓你求n的數的全排列中,按照順序的第k位應該是多少
規律還是比較明顯的


9.分治
75.Sort Colors
https://blog.csdn.net/AXIMI/article/details/84327713
這道題的意思就是一個數組裡面有0、1、2這三個陣列,然後將這些數字按照0、1、2的順序來排列。
一般的做法是統計這三個數字分別有多少個,然後再重新填進數組裡面。
這裡也可以用partition的做法,就是設定3個指標然後分情況來填充數字