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

2021-07-13 18:14:06 字數 1073 閱讀 9714

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

個結點。從

1開始計數,即該鍊錶的尾節點是倒數第乙個結點。

思路:

一、鍊錶是單向鍊錶,只能從頭結點往後依次遍歷,倒數第k

個結點,也就是從頭結點開始的

n-(k-1)

個結點。但是需要先遍歷一遍得到鍊錶長度,然後在找第

n-k+1的k

結點。

二、

(1)方法一需要對鍊錶進行二次遍歷,如果我們使用兩個指標,讓走快的指標走到最後乙個結點的時候走的慢的指標剛好走到倒數第k

個。

(2)也就是說快指標比慢指標要早走k-1

步。程式設計時先讓快指標走

k-1步,然後兩個一起走,直到快指標的下乙個為空則停止。此時快指標在尾節點的位置,慢指標在倒數第

k個位置。

問題:

需要考慮的(1

)當輸入的頭節點為空時;

(2

)k <=0

(3)看k

大於鍊錶的長度

都返回空

**:

/*

public class listnode

}*/public class solution

else

return null; //若k大於鍊錶的長度 返回null

}slower = head;

while(faster.next != null) //讓快指標的下乙個節點是否為空來做判斷,為空時說明快指標已經走到尾節點了,此時慢指標在倒數第k個位置,並將慢指標返回

return slower;

}}

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

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點.這種考題是比較簡單的一種,以前也碰到過類似的題目,從耗時來說,一般都是使用兩個指標,一前一後的走,中間間隔k或者k 1個步長,這個視判斷語句而定。當前乙個指標走到末端時,後乙個指標正好落在倒數第k個節點處,直接返回該節點。code public c...

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

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。分析 兩個指標,先讓第乙個指標和第二個指標都指向頭結點,然後再讓第一指標走 k 1 步,即到達第k個結點。然後兩個指標同時開始向後移動,當第乙個指標到達最後的結點時候,第二個結點所在位置就是倒數第k個結點了。author zy date 2017年10月3日...

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

1 題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。2 思路 設定兩個指標,乙個指標先向前走k 1步,然後兩個指標同時向前走,第乙個指標走到結尾時,第二個指標正好走到倒數第k個節點。注意三種情況 1 引數k 0 2 輸入的鍊錶為空 3 鍊錶中的節點數小於k 如下 class listnode p...