题解 | #链表中倒数最后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;
}

全部评论

相关推荐

点赞 评论 收藏
分享
牛客263158796号:我领羊一面后十天不挂也不推进 今天问hr说等前序的第一批意向发完看情况再看是否推进
点赞 评论 收藏
分享
10-25 23:12
门头沟学院 Java
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务