题解 | #删除链表的倒数第n个节点#

删除链表的倒数第n个节点

http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

题意:


方法:
模拟

思路:
        首先,统计链表长度 num;
        然后,num - n 得到从前往后遍历删除的节点编号;
        最后,遍历删除。
        
        注意:删除某节点要先得到某节点的前一个节点。

    


class Solution {
public:
    
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        if(head==nullptr)
            return nullptr;
        int num=0;
        for(ListNode* p=head;p;p=p->next){//统计链表长度
            num++;
        }
        int t=num-n;//删除正向第t个节点,t从0开始
        ListNode *p=head,*q=head->next;
        if(t==0){//如果是第一个节点
            head=head->next;
        }else{
            t--;
            while(t--){//删除某节点要先得到某节点的前一个节点
                p=p->next;
                q=q->next;
            }
            p->next=q->next;
        }
        return head;
    }
};

时间复杂度:
空间复杂度:



全部评论

相关推荐

想申请延毕了,找工作找到崩溃,越找就越想摆烂,还有25届的和我一样感受吗?
码农索隆:没事哒,好兄弟,慢慢来,调整心态,车到山前必有路,感到迷茫的时候,多抬头看看
点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务