题解 | #删除链表的倒数第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;
    }
};
全部评论

相关推荐

牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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