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

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

http://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
        if(!head || !n)
            return head;
        if(n == 1 && !head->next)
            return nullptr;
        ListNode* reHead = reverseList(head);
        ListNode* tmpHead = reHead;
        if(n == 1)
        {
            ListNode* tmp = tmpHead->next;
            return reverseList(tmp);
        }

        while(n--)
        {
            if(n == 1)
            {
                ListNode* tmp = tmpHead->next->next;
                tmpHead->next = tmp;
            }
            else
                tmpHead = tmpHead->next;
        }
        return reverseList(reHead);
    }

    ListNode* reverseList(ListNode* head)
    {
        if(!head || !head->next)
            return head;
        ListNode* ret = nullptr;
        while(head)
        {
            ListNode* tmp = head->next;
            head->next = ret;
            ret = head;
            head = tmp;
        }
        return ret;
    }

};
全部评论
也不算新思路吧,反转链表
点赞 回复 分享
发布于 2021-09-15 11:13

相关推荐

不愿透露姓名的神秘牛友
12-16 15:57
小鹏汽车 java后端 22*15(固定13,2个月年终) 硕士211
点赞 评论 收藏
分享
想进开水团喝开水:哦 给我一个 就算你真拿到牛友也会为你开心的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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