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

2021-09-24 01:37:55 字數 598 閱讀 3215

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

最容易想到的辦法就是,遍歷一遍鍊錶,得到其長度,然後就可以找到倒數第n個節點。還有乙個方法是只遍歷一遍鍊錶,使用雙指標,用乙個指標先走k步,如果此時為空,說明k就是鍊錶長度,這樣返回第乙個節點就好。如果不為空,這時第二個指標和第乙個指標開始一起走,當第乙個指標最後最後乙個節點時,第二個指標剛好走到第k個元素。

/*

struct listnode

};*/

class solution

if(k>count) return null;

//if(k==count) return plisthead;

int target=count-k;

for(int i=0;inext;

}return second;

}};//雙指標法

struct listnode

};class solution

else return null;

}while(first->next!=null)

return second;

}};

需要掌握雙指標法。

劍指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這種方法比較笨拙,相當於正序遍歷了...