博客 / 列表

葱 - 鏈表-刪除、合併

鏈表 刪除鏈表中的某個節點或某一段區間 leetcode.203 鏈接https://leetcode.cn/problems/... 解題方法:鏈表中刪除一個節點的常規方法就是找到這個節點的前驅節點,將前驅節點的next指針指向當前節點的後繼節點 leetcode解題代碼 /** * Definition for singly-linked list. * struct L

leetcode個人解題總結 , c++ , 數據結構與算法

葱 - 字符串-KMP算法、字符串哈希

KMP算法 應用場景 KMP算法一般用於字符串匹配問題 例如:給出兩個字串S,P需要判斷P串是否為S串的子串 前綴表 前綴:包含第一個字符不包含最後一個字符 後綴:包含最後一個字符不包含最後一個字符 例如:aaba 前綴分別為:a, aa, aab 後綴分別為:a, ba, aba 最長相等前後綴:記錄前綴和後綴相等的長度,在這個例子中最長相等前後綴為

leetcode個人解題總結 , c++ , 數據結構與算法

葱 - 字符串

反轉字符串 leetcode.344 鏈接https://leetcode.cn/problems/... 解題方法:雙指針 l,r指針分別放在字符串的首尾兩端,每次交換兩個字符 每交換一次指針向中間移動一位 leetcode解題代碼 class Solution { public: void reverseString(vectorchar s) {

leetcode個人解題總結 , c++ , 數據結構與算法

葱 - 數組-雙指針、滑動窗口、螺旋矩陣

雙指針算法(其它類型) leetcode.977 鏈接https://leetcode.cn/problems/... 解題方法:有序數組的平方最大值一定在數組的兩側 i指針從前向後遍歷,j指針從後向前遍歷,k指針用來存儲新數組放置在數組前後均可(本題題解放在數組末尾) 將nums[i]的平方與nums[j]的平方作比較,k指針將較大的數存到答案數組當中,同時移動較大的數

leetcode個人解題總結 , c++ , 數據結構與算法

葱 - 數組-雙指針算法(移除元素)

Two-pointers 雙指針算法(移除元素類型) leetcode.27 鏈接https://leetcode.cn/problems/... 解題方法:用len指針指向新數組下標 i指針從前往後遍歷原數組 如果nums[i] == val那麼len指針不動,i指針繼續向後遍歷 如果nums[i] != val那麼len向後移動一位,並將原數組的值賦給新數組

leetcode個人解題總結 , c++ , 數據結構與算法

葱 - 數組-二分查找

List-binarysearch 二分查找 leetcode.704 鏈接https://leetcode.cn/problems/... 解題方法:二分查找模板(有序數組) bool check(int x) // 檢查x是否滿足某種性質 int bsearch_1(int l, int r){ while (l r){ int mid = l + r 1;

leetcode個人解題總結 , c++ , 數據結構與算法