链表中倒数第K个节点

  1. 题目描述
    1. 思路
      1. 求含有环的链表的环的入口?也可以用这个解决,先求环的长度

题目描述

输入一个链表,输出该链表中倒数第k个结点。

思路

  • 倒数第K个节点???
  • 先求总长度 len
  • p遍历到 len-k个节点
  • q从头开始遍历,p也同时遍历,到达尾部时。q指向的就是倒数第k个节点。

求含有环的链表的环的入口?也可以用这个解决,先求环的长度

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        ListNode* p = pListHead;
        ListNode* q = pListHead;
        int count = 0;
        // 非法判断
        if (k <= 0) return nullptr;
        // 统计链表节点数量
        while(count < k && p != nullptr){
            p = p->next;
            count++;
        }
        if (p == nullptr ){// 提前结束了节点
            if (count < k){// size < k,节点数量小于k
                return nullptr;
            }else {// size = k,节点数量恰好等于k
                return q;
            }
        } 
        // size > k,节点数量大于k,两个指针同时移动,直到到达倒数第k个节点
        while(p != nullptr){
            q = q->next;
            p = p->next;
        }
        return q;
    }
};

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com

💰

Title:链表中倒数第K个节点

Count:267

Author:攀登

Created At:2019-12-26, 23:12:31

Updated At:2024-06-15, 15:53:35

Url:http://jiafeimao-gjf.github.io/2019/12/26/sword-%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%ACK%E4%B8%AA%E8%8A%82%E7%82%B9/

Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

×

Help us with donation