劍指Offer(14) 鍊錶中倒數第k個結點

2021-09-14 06:53:12 字數 595 閱讀 5589

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

定義兩個指標。第乙個指標從煉表頭開始向後走k步,第二個指標保持不動;從第k+1步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k,當第乙個指標到達鍊錶的尾結點後的null時,第二個指標指向的正好是倒數第k個結點。

例如:要找倒數第3個結點,第乙個指標從煉表頭先向後走3步,走到3

第乙個指標:

第乙個指標:

然後兩個指標同時向後遍歷,直至第乙個指標到達null,第二個指標指向倒數第k個結點

第乙個指標:

第乙個指標:

public

class

solution

listnode p = head, pk = head;

// 第乙個指標先走k步

for(

int i =

0; i < k; i++

)else

}// 兩個指標同時向後遍歷,直至第乙個指標到達null,第二個指標指向倒數第k個結點

while

(p != null)

return pk;

}}

劍指Offer (14)鍊錶中倒數第k個結點

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。實現如下 最後乙個節點定義為倒數第乙個節點 1 2 3 4 5 p s p s eg.尋找倒數第3個節點 k 1 2 要想一次遍歷找到倒數第k個節點,關鍵在於最後乙個節點與倒數第k個節點之間相差k 1個節點 所以要保證兩個指標之間一直保持k 1個節...

劍指offer 14 鍊錶中倒數第k個結點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。兩個指標,先讓第乙個指標和第二個指標都指向頭結點,然後再讓第乙個指正走 k 1 步,到達第k個節點。然後兩個指標同時往後移動,當第乙個結點到達末尾的時候,第二個結點所在位置就是倒數第k個節點處。public class listnode public cla...

劍指offer14 鍊錶中倒數第k個結點

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。解決思路 1.備份初始結點 2.計數結點個數 3.判斷是否超出 4.正序遍歷得到第count k個結點 public class solution if countreturn null for int i 0 i這種方法比較笨拙,相當於正序遍歷了...