leetCode 19.Remove Nth Node From End of List(删除倒数第n个节点) 解题思路和方法

原创 2015年07月06日 16:53:15

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,

   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.
Note:
Given n will always be valid.

Try to do this in one pass.


思路:删除倒数第n个节点,因为是单链表,不知道节点总数,故先遍历,统计节点总数,算出正数第几个,然后删除即可。

算法很简单,代码如下:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        //删除倒数第n个
        if(n == 0){
            return head;
        }
        int nth = 0;//倒数第n个
        int count = 0;//总的节点数
        ListNode p = head;
        //统计count
        while(p != null){
            p = p.next;
            count++;
        }
        //计算正数n的值,从0计算
        n = count - n;
        if(n == 0){//如果为0,说明头结点,返回头结点下一个即可
            return head.next;
        }
        p = head;
        //数到n-1,然后令n-1.next = n.next = n-1.next.next即可
        while(nth < n - 1){
            p = p.next;
            nth++;
        }
        p.next = p.next.next;

        return head;
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

[C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)

Problem: Given a linked list, remove the nth node from the end of list and return its head. For exam...

【LeetCode-面试算法经典-Java实现】【019-Remove Nth Node From End of List(移除单链表的倒数第N个节点)】

【019-Remove Nth Node From End of List(移除单链表的倒数第N个节点)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a l...

LeetCodet题解--19. Remove Nth Node From End of List(删除链表的倒数第n个元素)

链接 LeetCode题目:https://leetcode.com/problems/remove-nth-node-from-end-of-list GitHub代码:https:/...
  • gatieme
  • gatieme
  • 2016年04月07日 22:42
  • 1114

leetcode_[python/C++]_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 ex...

LeetCode Remove Nth Node From End of List 删除倒数第n个元素

这里的Note的意思应该就是可以不做特殊处理n值了。不过其实特殊处理也就一句语句。 思路: 快指针和慢指针的概念,先一个指针先走,到了离起点n个节点远的时候,慢指针走,等到快指针走到结尾,那么慢指...

LeetCode-19 Remove Nth Node From End of List(移除尾部第N个节点)

LeetCode-19 Remove Nth Node From End of List Given a linked list, remove the nth node from the end o...

LeetCode 19. Remove Nth Node From End of List 解题报告

LeetCode 19. Remove Nth Node From End of List 解题报告题目描述Given a linked list, remove the nth node from ...

[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 exampl...

【LeetCode】Remove Nth Node From End of List && 【九度】题目1517:链表中倒数第k个结点

Remove Nth Node From End of List Total Accepted: 8400 Total Submissions: 28316 Given a linked list, ...

LeetCode OJ 之 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. 删除链表的从尾部数第...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetCode 19.Remove Nth Node From End of List(删除倒数第n个节点) 解题思路和方法
举报原因:
原因补充:

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