AcWing 33. 链表中倒数第k个节点 (快慢指针赛跑)

设置两个指针,快指针先行遍历k次,然后在同慢指针同步遍历。当快指针抵达链表尾部时,慢指针所指位置即链表中倒数第k个结点。遍历期间,要注意快指针先到达链表尾部的情况。

具体代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* findKthToTail(ListNode* pListHead, int k) {
        ListNode *p = pListHead, *q = pListHead;
        for(int i = 0; i < k; i++){
            if(!p) return NULL;
            p = p -> next;
        }
        while(p){
            p = p -> next;
            q = q -> next;
        }
        return q;
    }
};

 

相关文章:

  • 2022-01-09
  • 2021-10-30
  • 2021-11-24
  • 2021-06-16
  • 2022-02-13
  • 2022-01-01
  • 2021-09-30
猜你喜欢
  • 2021-07-23
  • 2021-07-27
  • 2021-09-28
  • 2021-07-05
相关资源
相似解决方案