14鍊錶中倒數第K個結點

2022-05-01 02:39:11 字數 893 閱讀 5417

1

鍊錶中倒數第k個結點2//

題目:輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點3//

思路:看到鍊錶二話不說,先寫鍊錶結點定義

4struct

listnode59

};10

//常規思想:

//然後,假設整個鍊錶有n個結點,那麼倒數第k個結點,就是正數的第n-k+1個結點。如果我們能夠得到鍊錶中結點的個數n,那麼只要從頭結點開始往後走n-k+1步就可以了。

11//

--------只能遍歷一次鍊錶----找到倒數第k個結點。--------

12//

第乙個指標從鍊錶的頭結點開始遍歷向前走k-1, 第二個指標保持不動;

13//

從第k步開始,第二個指標額開始從鍊錶的頭結點開始遍歷,

14//

兩指標的距離保持在k-1, 當第乙個指標到達鍊錶的尾結點時,第二個指標正好是倒數第k個結點。

15class

solution

1624

//遍歷鍊錶,先備份頭結點,讓第乙個指標先走k-1步

25 listnode* tmpnode =plisthead;

26for (int i = 0; i < k-1; ++i)

2732

else

3336}37

//然後第二個指標從頭開始走,第乙個指標從k走,二者相差k-1步。當第乙個指標走n-k-1,則第二個指標就走到了k步。

38 listnode* tmpnode2 =plisthead;

39while(tmpnode->next!=null)

4044

return

tmpnode2;45}

46 };

14 鍊錶中倒數第k個結點

題目鏈結 題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。先遍歷求得鍊錶長度,再遍歷查詢。時間複雜度o n struct listnode class solution p plisthead k cnt k 1 while p p p next return p 求倒數第k個結點,設立兩個指標...

14鍊錶中倒數第k個結點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思路 快慢指標 快指標 先走k 步,然後快慢指標一起走 當快指標走到null 時,慢指標就是所求的倒數第 個節點 判斷 是否越界是在快指標走的時候 1 public class solution 12while fast null 16 return slo...

14鍊錶中倒數第k個結點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思路 要保證兩個鍊錶之間相差k個,這樣計算移動才是正確結果,這題受到以前做的題目的影響,面試的時候一定要問清楚k會不會大於總長度,如果大於總長度是取模還是出錯,這題就是返回錯誤資訊。struct listnode class solution listnod...