leetcode刷題總結 1-100
leetcode
1. Two Sum
維護2個指標即可
2. Add Two Numbers
類似於大數相加
3. Longest Substring Without Repeating Characters
找最長的不出現重複字元的子串,維護2個指標滑動即可。
4. Median of Two Sorted Arrays
找2個有序陣列的中位數
5. Longest Palindromic Substring
找最長的迴文子串,列舉i,然後向兩邊擴充套件
6. ZigZag Conversion
模擬題
7. Reverse Integer
水題
8. String to Integer (atoi)
模擬題,字串轉成整數
9. Palindrome Number
確定一個數是否是迴文數
10. Regular Expression Matching
判定正則表示式是否匹配,只有*和.的情況
11. Container With Most Water
好題 也是維護2個指標向中間移動,移動的那個肯定是短的
12. Integer to Roman
數字轉羅馬錶達
13. Roman to Integer
羅馬字元表達轉數字
14. Longest Common Prefix
找一堆字串的最長公共字首,網上的都是暴利,可以用字典樹,構造最後一個字串的時候,一邊構造,一邊判斷節點的大小是否等於字串數
15. 3Sum
a+b+c=0 => a+b=-c 排序 如果數字比較小的話用x[n]=1表示有n這個數,
排序,2個迴圈遍歷a,b,然後二分或者x[-(a+b)] 是否存在確定第三個數 複雜度n^2longn
迴圈第一個 然後 從剩下的兩邊往中間壓,複雜度n^2
16. 3Sum Closest
a+b+c=x => a+b=x-c
最low的就是三個for迴圈,好一點的就是2個for迴圈,在二分第三個x-c最接近的,複雜度n^2logn
還是確定第一個,另外兩個從兩端往中間壓 n^2複雜度
17. Letter Combinations of a Phone Number
水題
18. 4Sum
類似於3sum
19. Remove Nth Node From End of List
刪除連結串列倒數第n個節點,快慢指標,可以先移動n步做個差。
20. Valid Parentheses
水題
21. Merge Two Sorted Lists
水題,合併2個有序列表
22. Generate Parentheses
n對括號有多少種表達的方式 遞迴一下
23. Merge k Sorted Lists
堆維護每個連結串列的頭元素,或者兩兩歸併,複雜度loknk
24. Swap Nodes in Pairs
兩兩互動連結串列的節點,也是基本操作
25. Reverse Nodes in k-Group
連結串列每k個反轉
26. Remove Duplicates from Sorted Array
刪除排序陣列重複的元素
27. Remove Element
水題
28. Implement strStr()
kmp
29. Divide Two Integers
好題,模擬除法,不能用取模,乘法,除法
30. Substring with Concatenation of All Words
求主串包含所有子串的起點和終點,子串長度都是相等的
31. Next Permutation
求下一個排列,找一下規律看看
32. Longest Valid Parentheses
好題啊 dp和棧都能解
33. Search in Rotated Sorted Array
一個有序的陣列 分成了2段 求一個數 可以二分
34. Search for a Range
找目標數字 起點和終點 二分
35. Search Insert Position
有序陣列找目標數字 二分
36. Valid Sudoku
驗證九宮格是否合法
37. Sudoku Solver
數獨 求解,遞迴 或者 舞蹈鏈 dance link
38. Count and Say
暴利模擬
39. Combination Sum
題意是求和假期加起來等於s的所有組合,數字可以用無數次
網上很多都是暴力遞迴+剪枝,剪枝無非是
1排序,過濾掉比s大的 2 查詢到 >= s的情況下直接返回 因為是排序後的,接下來搜尋的結果肯定至少大於等於的,答案也不能重複,所以剪枝
複雜度應該是2^n
40. Combination Sum II
相對於上一題 數字只能使用一次
41. First Missing Positive
好題啊,求第一個不存在的正數,時間複雜度要求n,空間複雜度要求常數 用a[i]表示i+1
42. Trapping Rain Water
好題,最大儲水量,對於每一個點,記錄左邊和右邊的最大值,可以一邊滑動一邊求左右最大值,不需要申請n空間記錄每一個
43. Multiply Strings
大數相乘
44. Wildcard Matching
判斷正則表示式是否匹配,有?和*2種情況
45. Jump Game II
陣列每個元素表示你最大能跳幾步,求最少幾步調到終點,開始在陣列第一個位置,貪心即可
46. Permutations
求全排列,遞迴即可,非遞迴還沒有研究
47. Permutations II
求全排列,有重複的數字,遞迴的時候特殊處理一下
48. Rotate Image
將一個n*n的陣列順時針旋轉90度
49. Group Anagrams
將字串分組,eat tea為一組,字串雜湊
50. Pow(x, n)
快速冪
51. N-Queens
n皇后問題
52. N-Queens II
n皇后問題
53. Maximum Subarray
求和最大的子序列
54. Spiral Matrix
n*m矩陣,螺旋狀列印
55. Jump Game
陣列每個元素表示你最大能跳幾步,求是否能跳到終點,開始在陣列第一個位置,貪心即可 參考45題
56. Merge Intervals
將區間合併 1,3 2,5 合併成1,5 排序處理即可 貪心
57. Insert Interval
給你一些不重疊的區間 現在加入合併一個區間
58. Length of Last Word
求最後一個單詞的長度 水題
59. Spiral Matrix II
螺旋列印n*n陣列
60. Permutation Sequence
求第k個全排列
61. Rotate List
連結串列斷開在連線
62. Unique Paths
求從左上角到右下角的方案數 dp或者c(n+m,n)組合數
63. Unique Paths II
相對於62題多了障礙物,只能dp了
64. Minimum Path Sum
求左上角到右下角和最小的路徑,dp
65. Valid Number
模擬題,驗證一個字串是不是數字
66. Plus One
數字+1
67. Add Binary
模擬2進位制加法
68. Text Justification
字串分成l個字元每行,填充空格 模擬題
69. Sqrt(x)
開根號,只取整數,網上有二分和牛頓迭代法
70. Climbing Stairs
斐波那契數列
71. Simplify Path
簡化字串 "/a/./b/../../c/"
, => "/c" 模擬
72. Edit Distance
編輯距離 dp n^2
73. Set Matrix Zeroes
一個矩陣 如果某個元素是0,將該行該列都置零
74. Search a 2D Matrix
在一個行都遞增的矩陣裡面查詢一個數是否存在,下一行第一個比上一行最後一個大
那不就是全遞增的嗎,二分
75. Sort Colors
就0,1,2 3種數字排序
76. Minimum Window Substring
滑動視窗,在s中找到最短的包含t的字串
77. Combinations
n,k 求包含k個數字的組合數 遞迴
78. Subsets
求不重複數集的所有子集 遞迴
79. Word Search
求字串是否存在 搜尋
80. Remove Duplicates from Sorted Array II
刪除重複數字 最多隻能出現2次
81. Search in Rotated Sorted Array II
一個有序的陣列 分成了2段 求一個數 可以二分 同33 只不過 有重複數字
82. Remove Duplicates from Sorted List II
將有序連結串列中的重複數字全部刪除
83. Remove Duplicates from Sorted List
和上一題相比 區別就是 一樣的只留下一份
84. Largest Rectangle in Histogram
單調佇列 dp
85. Maximal Rectangle
最大全1子矩陣 dp
86. Partition List
給一個連結串列,將小於值x的結點放到所有大於等於值x的結點的前面,不要改變結點之間的順序
注意邊界處理
87. Scramble String
區間dp 或者從小的往大的推
判斷isScramble(s11,s21)&&isScramble(s12,s22)或者isScramble(s12,s21)&&isScramble(s11,s22)
88. Merge Sorted Array
合併2個有序陣列
89. Gray Code
求格雷碼,構造題
90. Subsets II
求不重複的子集,遞迴的時候判斷一下如果和前面的一樣 跳過即可
91. Decode Ways
dp 求字串的解碼數,比如12 可以是AB 也可以是L
92. Reverse Linked List II
部分連結串列反轉
93. Restore IP Addresses
分隔ip地址,遞迴加上三個點,每段判斷一下即可
94. Binary Tree Inorder Traversal
中序遍歷二叉樹,非遞迴方法
95. Unique Binary Search Trees II
求1-n組成的二叉索引樹數量 每個點都可以作為根 遞迴 左邊比根小1-i到1右邊比根大i+1到n
96. Unique Binary Search Trees
這題和上題一樣,但是是求數量 可以用卡特蘭樹
97. Interleaving String
s3是否是s1和s2交錯合併成的 dp
98. Validate Binary Search Tree
驗證是否是二叉樹,中序遍歷是有序的,可以利用94題的非遞迴方法
99. Recover Binary Search Tree
恢復二叉索引樹,可以使用中序遍歷的時候作比較
100. Same Tree
2棵樹是否相等