LeetCode 劍指 Offer 22. 連結串列中倒數第k個節點(快慢指標)
阿新 • • 發佈:2021-02-05
題意:
輸入一個連結串列,輸出該連結串列中倒數第k個節點。
為了符合大多數人的習慣,本題從1開始計數,即連結串列的尾節點是倒數第1個節點。
例如,一個連結串列有 6 個節點,從頭節點開始,它們的值依次是 1、2、3、4、5、6。
這個連結串列的倒數第 2 個節點是值為 4 的節點。
解法:
開兩個指標x個y,保持y=x+k,
然後x和y不斷向右移動,當y變成NULL的時候,x就是倒數第k個了.
code:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* getKthFromEnd(ListNode* head, int k) {
ListNode *x=head,*y=head;
for(int i=1;i<=k;i++){
y=y->next;
}
while(y){
y=y->next;
x=x->next;
}
return x;
}
};