/*
給你一個單鏈表的頭節點 head ,請你判斷該鏈表是否為迴文鏈表。如果是,返回 true ;否則,返回 false 。
*/
前置知識: lc0876 鏈表的中間節點 (用快慢指針找到鏈表的中間節點)
Lc0234這題的的思路是
1、用快慢指針找到原鏈表後半部分(找到後半段鏈表的頭指針)。
2、將前半段鏈表反轉。
3、比較反轉後的前半段鏈表和後半段鏈表。
其中1、2 兩步驟可以同時進行。
先看代碼
這題有兩個需要注意的點
1、奇數長度的鏈表和偶數長度的鏈表處理方式不同。
2、反轉鏈表的操作本身。
下面看圖解。
奇數長度的鏈表 slow需要往前走一步
而偶數長度的鏈表,快慢指針的while循環之後slow指針已經到達了預期的位置
再看反轉鏈表的過程,這是剛接觸鏈表的選手比較難理解的地方
重點在while循環中紅框的代碼部分
完結。
同步更新到自己的語雀
https://www.yuque.com/dirackeeko/tfpe21/ny24nl7sleaocz5b