LeetCode-Remove Nth Node From End of List
2015-03-09 01:22
316 查看
两个pointer,这种无法知道linkedlist size的,(给的是自己定义的 list node) 却要从后往前数的,就需要两个指针,在开始就让他们以前以后相差n,然后一同向后,当前面那个fast的到达末尾的时候,slow正好就到了倒数第n个的前一个。
public class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if ( head == null)
return head;
ListNode first = head;
ListNode second = head;
for ( int i = 0; i < n; i ++ ){
first = first.next;
}
if ( first == null ){
head = head.next;
return head;
}
while ( first.next != null ){
first = first.next;
second= second.next;
}
second.next = second.next.next;
return head;
}
}
注意一下开始的pointer位置的话就可以稍微简化一点:
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode start = new ListNode(0);
ListNode slow = start, fast = start;
slow.next = head;
//Move fast in front so that the gap between slow and fast becomes n
for(int i=1; i<=n+1; i++) {
fast = fast.next;
}
//Move fast to the end, maintaining the gap
while(fast != null) {
slow = slow.next;
fast = fast.next;
}
//Skip the desired node
slow.next = slow.next.next;
return start.next;
}
public class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if ( head == null)
return head;
ListNode first = head;
ListNode second = head;
for ( int i = 0; i < n; i ++ ){
first = first.next;
}
if ( first == null ){
head = head.next;
return head;
}
while ( first.next != null ){
first = first.next;
second= second.next;
}
second.next = second.next.next;
return head;
}
}
注意一下开始的pointer位置的话就可以稍微简化一点:
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode start = new ListNode(0);
ListNode slow = start, fast = start;
slow.next = head;
//Move fast in front so that the gap between slow and fast becomes n
for(int i=1; i<=n+1; i++) {
fast = fast.next;
}
//Move fast to the end, maintaining the gap
while(fast != null) {
slow = slow.next;
fast = fast.next;
}
//Skip the desired node
slow.next = slow.next.next;
return start.next;
}
相关文章推荐
- leetcode -- Remove Nth Node From End of List
- [Leetcode] Remove Nth Node From End of List
- LeetCode 19: Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List
- LeetCode - Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List 解题报告
- leetcode 40: Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List
- LeetCode 笔记系列四 Remove Nth Node From End of List
- LeetCode-Remove Nth Node From End of List
- leetcode 40: Remove Nth Node From End of List
- [LeetCode]Remove Nth Node From End of List
- [leetcode]Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List
- [leetcode刷题系列]Remove Nth Node From End of List
- leetcode--Remove Nth Node From End of List
- LeetCode-Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List