码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode(19) - Remove Nth Node From End of List

时间:2016-03-13 14:10:43      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

  题目要求是,给你一个单向链表,和一个数字n,删除该链表倒数第n个node,其中测试案例中n能保证一定有效。

  思路很简单,用两个指针,它们两个相隔为n,当后面的指针指向链表尾的时候,前面的指针指向的node的下一个node,就是要删除的那一个。

  代码如下:

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) { val = x; }
 7  * }
 8  */
 9 public class Solution {
10     public ListNode removeNthFromEnd(ListNode head, int n) {
11         //当可能需要处理head的时候,用dumpNode来指向head,处理起来会方便很多。
12         ListNode dumpNode = new ListNode(0);
13         dumpNode.next = head;
14         ListNode prev = dumpNode;
15         ListNode curr = prev;
16         //让prev和curr的距离为n
17         while (n-- > 0) {
18             curr = curr.next;
19         }
20         //让curr走到链表尾部,prev随着curr一起走,
21         while (curr.next != null) {
22             prev = prev.next;
23             curr = curr.next;
24         }
25         //删除prev的下一个链表。
26         prev.next = prev.next.next;
27         //返回head。
28         return dumpNode.next;
29     }
30 }

 

LeetCode(19) - Remove Nth Node From End of List

标签:

原文地址:http://www.cnblogs.com/kepuCS/p/5271698.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!