首页 > 其他 > 详细

链表中倒数第k个结点

时间:2020-05-22 22:58:38      阅读:55      评论:0      收藏:0      [点我收藏+]

题目描述

输入一个链表,输出该链表中倒数第k个结点。
两个链表,一个记录k-1步,一个从0开始。这样第一个链表相当于记录的作用。这里要好好理解一下为什么是k-1而不是k。因为是k的话和第二个链表一起走的时候,就是k+1了而不是刚好对应k。
优质解答
class Solution {
public:
    ListNode* FindKthToTail(ListNode* p, unsigned int k) {
        //if(!p) return nullptr;
        auto p1=p;
        for(int i=0;i!=k;++i)
            if(!p1)return nullptr;
        else
            p1=p1->next; 
        while(p1){ 
            p1=p1->next;
            p=p->next;
        }
        return p;
    }
};
 
 
劣质解答

class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
  ListNode* first = pListHead;
  ListNode* second = pListHead;
  if(first == nullptr)
    return nullptr;
  for(int i =0 ;i <k-1;i++){  //这里走k-1步,为什么呢? 因为第k步就要和second一起走

    if(first->next != nullptr)
      first = first->next;
    else
      return nullptr;
  }
  while(first->next != nullptr){
      first = first->next;
      second = second ->next;
  }
      return second;
  }
};

链表中倒数第k个结点

原文:https://www.cnblogs.com/yl1995/p/12939985.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!