题目
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的可用,因此可以省去很多判断了。
代码
public class RemoveNthNodeFromEndOfList { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode p = dummy; for (int i = 0; i < n; ++i) { p = p.next; } ListNode q = dummy; while (p.next != null) { p = p.next; q = q.next; } q.next = q.next.next; return dummy.next; } }
LeetCode | Remove Nth Node From End of List,布布扣,bubuko.com
LeetCode | Remove Nth Node From End of List
原文:http://blog.csdn.net/perfect8886/article/details/23040515