首页 > 其他 > 详细

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

时间:2016-03-13 14:09:22      阅读:182      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!