题解 | #链表中倒数最后k个结点#

链表中倒数最后k个结点

https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9

这道题还是非常简单的,只需要重新定义一个指针作为链表的尾指针即可实现返回倒数k个节点。

主要思路是:

首先将pHead赋给pTail;

然后在pTail!=NULL的情况下,将pTail向后移动k-1个节点;如果发生pTail==NULL的情况,则说明数量不足以返回倒数k个, return NULL即可;

然后就是在pTail->next!=NULL的情况下,不停地向后移动pHead和pTail即可,最后返回pHead就好~

我犯错的点在于没有考虑k==0这个特殊情况,不过鼠鼠窝呀还是考虑到pHead为NULL的情况了,只能说还是写的太少了,没经验捏qaq

struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) {
    // write code here
    if(pHead==NULL)
    {
        return NULL;
    }
    if(k==0)
    {
        return NULL;
    }
    struct ListNode* pTail = pHead;
    for(int i=1;i<k;i++)
    {
        pTail = pTail->next;
        if(pTail==NULL)
        {
            return NULL;
        }
    }
    while(pTail->next!=NULL)
    {
        pHead = pHead -> next;
        pTail = pTail -> next;
    }
    return pHead;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 10:28
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务