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...