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

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

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

快慢指针加虚拟头结点处理。注意处理链表长度为n的和小于n的情形。

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode node(0);
        node.next = head;

        ListNode* fast = head;
        ListNode* slow = &node;

        // fast前进 n步
        for(int i=0; i<n; i++) {
            if(!fast)    return head;
            fast = fast->next;
        }

        while(fast) {
            fast = fast->next;
            slow = slow->next;
        }
        ListNode* temp = slow->next->next;
        delete slow->next;
        slow->next = temp;        

        return node.next;
    }
};
全部评论

相关推荐

昨天 13:14
已编辑
中山大学 算法工程师
牛客849740264号:友友,要不要看看我们这里的算法岗?现在是急招岗,最后3天截至,欢迎来试一试呀
点赞 评论 收藏
分享
03-26 15:18
已编辑
华北水利水电大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务