Easy-题目44:19. Remove Nth Node From End of List

原创 2016年05月30日 20:33:57

题目原文:
Given a linked list, remove the nth node from the end of list and return its head.

For example,
Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5.
题目大意:
给出一个单链表,删除倒数第n个节点。
题目分析:
用两个指针,第一个指针p1指向头结点,然后第二个节点p2指向p1之后第n个节点(向右滑动n次)。然后并行向右滑动两个指针,直到p2为最后一个节点(p2->next==NULL),此时p1指向待删除节点的前一个节点,令p1=p1->next即可。
源码:(language:c)

struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
    if (!head)
        return NULL;
    struct ListNode *p1 = head;
    struct ListNode *p2 = head;
    for(int i = 0; i < n; i++)
        p2 = p2->next;
    if(!p2) 
        return head->next;

    while(p2->next) {
        p1 = p1->next;
        p2 = p2->next;
    }

    p1->next=p1->next->next;
    return head;
}

成绩:
0ms,beats 19.70%,众数0ms,80.30%
Cmershen的碎碎念:
本题有一个需要讨论的地方,就是在p2向右滑动n步的时候,有可能滑到最后一个节点的后面(即null),此时说明要删除的是头节点,直接返回head->next即可。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

[LeetCode] 019. Remove Nth Node From End of List (Easy) (C++/Python)

[LeetCode] 019. Remove Nth Node From End of List (Easy) (C++/Python)
  • hcbbt
  • hcbbt
  • 2015年03月04日 19:26
  • 2283

LeetCode 19 : Remove Nth Node From End of List (Java)

解题思路:一开始我的做法是先遍历一遍取得长度,然后长度减去n就知道要删除正着数第几个元素,结果题目要求one pass。那就只能用两个指针,一个快指针先走n步,一个慢指针从头开始走,这样当快指针走到尾...
  • changetocs
  • changetocs
  • 2015年12月01日 20:02
  • 949

LeetCode19——Remove Nth Node From End of List

Given a linked list, remove the nth node from the end of list and return its head. For example, ...
  • booirror
  • booirror
  • 2015年02月05日 15:07
  • 1162

[leetcode] 19. Remove Nth Node From End of List python实现【easy】

Remove Nth Node From End of List My Submissions QuestionEditorial Solution Given a linked list, r...
  • zl87758539
  • zl87758539
  • 2016年06月14日 21:50
  • 685

【LeetCode】19 Remove Nth Node From End of List (c++实现)

Given a linked list, remove the nth node from the end of list and return its head. For example,    G...
  • styshoo
  • styshoo
  • 2015年07月22日 10:29
  • 371

[C语言][LeetCode][19]Remove Nth Node From End of List

题目Remove Nth Node From End of List Given a linked list, remove the nth node from the end of list an...
  • Timsley
  • Timsley
  • 2016年03月07日 23:05
  • 896

LeetCode:Remove Nth Node From End of List

题目描述: Given a linked list, remove the nth node from the end of list and return its head. For...
  • yao_wust
  • yao_wust
  • 2014年11月18日 10:08
  • 3920

19. Remove Nth Node From End of List(移除链表的倒数第n个节点)

问题描述 Given a linked list, remove the nth node from the end of list and return its head. For exampl...
  • lihuixuaaa
  • lihuixuaaa
  • 2017年10月01日 09:59
  • 92

Remove Nth Node From End of List -- LeetCode

原题链接: http://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/  这道题是链表基本操作,主要问题就是如何得到链表的倒数第...
  • linhuanmars
  • linhuanmars
  • 2014年02月23日 23:39
  • 5897

LeetCode(19) Remove Nth Node From End of List

题目如下: Given a linked list, remove the Nth node from the end of list and return its head. For example...
  • feliciafay
  • feliciafay
  • 2013年12月18日 14:30
  • 1786
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Easy-题目44:19. Remove Nth Node From End of List
举报原因:
原因补充:

(最多只允许输入30个字)