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

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

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

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        // write code here
        ListNode* first = head; // first指针统计节点个数
        int count = 0;
        ListNode* second = head;    // second指针找到倒数第n+1个节点
        ListNode* result = new ListNode(-1);    // 最后返回result
        result->next = head;

        // 统计结点个数
        while(first){
            first = first->next;
            count++;
        }

        // 如果count等于n,说明删除第一个节点,直接返回result->next->next
        if(count == n) return result->next->next;
        // count大于n,则找到倒数第n+1个节点
        while(count != n + 1){
            second = second->next;
            count--;
        }
        ListNode* temp = second->next;  // 暂存倒数第n个节点
        second->next = temp->next;  // 让倒数第n+1个结点的next指向倒数第n个结点的next
        delete temp;    // 释放内存
        return result->next;
    }
};

全部评论

相关推荐

rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧
点赞 评论 收藏
分享
程序员牛肉:你这简历有啥值得拷打的?在牛客你这种简历一抓一大把,也就是个人信息不一样而已。 关键要去找亮点,亮点啊,整个简历都跟流水线生产出来的一样。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务