1. 程式人生 > 其它 >LeetCode 劍指 Offer 22. 連結串列中倒數第k個節點(快慢指標)

LeetCode 劍指 Offer 22. 連結串列中倒數第k個節點(快慢指標)

題意:

輸入一個連結串列,輸出該連結串列中倒數第k個節點。
為了符合大多數人的習慣,本題從1開始計數,即連結串列的尾節點是倒數第1個節點。

例如,一個連結串列有 6 個節點,從頭節點開始,它們的值依次是 123456。
這個連結串列的倒數第 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; } };