● 24. 兩兩交換鏈表中的節(jié)點
算法思想:設(shè)置父節(jié)點,指向頭節(jié)點。要操作兩個節(jié)點進行交換,必須要站在兩個節(jié)點之外的前一個節(jié)點進行操作。
● 19.刪除鏈表的倒數(shù)第N個節(jié)點
算法思想:雙指針。遍歷節(jié)點,計算長度,求差即可以找到要刪除的節(jié)點的前一個節(jié)點。
● 面試題 02.07. 鏈表相交
算法思想:分別計算兩個鏈表的長度,求出長度差c。長的鏈表的指針先走c步,短的鏈表指針在頭指針位置保持不變。此時a、b兩個鏈表指針剩下要走的長度是一致的。
同時操作兩個指針,直到他們相遇的位置,就是相交的節(jié)點。
● 142.環(huán)形鏈表II
算法思想:
1.設(shè)置兩個快慢指針,快指針走2步的時候,慢指針走1步。相遇的時候肯定在環(huán)里。如果指針為空,說明不存在環(huán),直接返回。
2.此時可以操作指針計算環(huán)的大小count.
3.設(shè)置前后兩個指針,分別指向頭節(jié)點。前指針先走count步,再同時操作兩個節(jié)點同時走,直到兩個節(jié)點相遇就是換的入口節(jié)點。