博客 / 詳情

返回

[leetcode] 0234迴文鏈表 js實現 圖解

/*
給你一個單鏈表的頭節點 head ,請你判斷該鏈表是否為迴文鏈表。如果是,返回 true ;否則,返回 false 。
*/

前置知識: lc0876 鏈表的中間節點 (用快慢指針找到鏈表的中間節點)

Lc0234這題的的思路是
1、用快慢指針找到原鏈表後半部分(找到後半段鏈表的頭指針)。
2、將前半段鏈表反轉。
3、比較反轉後的前半段鏈表和後半段鏈表。
image.png

其中1、2 兩步驟可以同時進行。

先看代碼
image.png

這題有兩個需要注意的點
1、奇數長度的鏈表和偶數長度的鏈表處理方式不同。
2、反轉鏈表的操作本身。

下面看圖解。
奇數長度的鏈表 slow需要往前走一步
image.png

而偶數長度的鏈表,快慢指針的while循環之後slow指針已經到達了預期的位置
image.png

再看反轉鏈表的過程,這是剛接觸鏈表的選手比較難理解的地方

重點在while循環中紅框的代碼部分
image.png
image.png
image.png
image.png

完結。

同步更新到自己的語雀
https://www.yuque.com/dirackeeko/tfpe21/ny24nl7sleaocz5b

user avatar tingzhong666 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.