标签:leetcode
Remove Nth Node From End of List
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; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
leetCode 19.Remove Nth Node From End of List(删除倒数第n个节点) 解题思路和方法
标签:leetcode
原文地址:http://blog.csdn.net/xygy8860/article/details/46776459