反轉乙個單鏈表。
class
solution
return cur;}}
;
比較常見的思路,利用雙指標,乙個在前,乙個在後,進行就地翻轉
如果說便於理解的話,其實還可以寫出一種三指標的就地翻轉格式,就不寫了
第二個方法:頭插法
class
solution
head=q;
return head;}}
;
第三種,遞迴法,理解一下
class
solution
listnode* ret =
reverselist
(head-
>next)
;
head-
>next-
>next = head;
head-
>next =
null
;return ret;}}
;
請判斷乙個鍊錶是否為回文鍊錶。
class
solution
int left =
0, right = record.
size()
-1;while
(left < right)
return
true;}
};
利用了乙個輔助陣列,這個肯定是最好想到了的
題目中問能不能限制一下時間和空間複雜度,思考一下
class
solution
//2、將slow之後鍊錶進行斷開且反轉,最後翻轉完成之後pre指向反轉鍊錶的頭節點
while
(slow)
//3、前後鍊錶進行比較,注意若為奇數鍊錶,後半部分回比前部分多1乙個節點,然而我們只比較相同長度的節點值,巧妙地避開這點判斷
while
(head&&pre)
return
true;}
};
快慢指標找到鍊錶的中點,然後翻轉後半段再進行判斷,very very nice
class
solution
};
很簡單的乙個題,但是感覺題目描述有點問題,迷茫 leetcode刷題紀實(四)
給定乙個帶有頭結點 head 的非空單鏈表,返回鍊錶的中間結點。如果有兩個中間結點,則返回第二個中間結點。class solution return slow 這是快慢指標的經典解法,通過快慢指標移動速度的不同,來尋找到鍊錶的中間結點,而最好的速度比為2 1,這樣就可以使得當快指標到達鍊錶尾的時候,...
LeetCode刷題 動態規劃(三)
最長公共子串行問題,最基本的問題是在兩個字串中找出最長公共字串。方法是使用雙指標 i,j遍歷兩個字串,建立二維 dp 陣列,通過填表獲得結果。1143,最長公共子串行,medium 583,兩個字串的刪除操作,medium 712,兩個字串的最小ascii刪除和,medium 1143,最長公共子串...
leetcode刷題(22) 15 三數之和
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0 1 1,1,2 class solu...