[LeetCode 19] Remove Nth Node From End of List Solutions
2014-04-18 08:31
435 查看
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Note:
Given n will always be valid.
Try to do this in one pass.
Two ideas:
1. scan the list from head to end, record the length of it, Then, the nth node from the end of list is the length - n from the head, then, delete it.
2. use two pointers, one scans firstly to N, then, the second pointer goes with the first one, the span between them will be N, Then, when the first pointer go to the end. The second one will point to Nth node.
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.
Two ideas:
1. scan the list from head to end, record the length of it, Then, the nth node from the end of list is the length - n from the head, then, delete it.
2. use two pointers, one scans firstly to N, then, the second pointer goes with the first one, the span between them will be N, Then, when the first pointer go to the end. The second one will point to Nth node.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *removeNthFromEnd(ListNode *head, int n) { if(head == nullptr) return head; ListNode *cur = head, *end = head; ListNode *temp = new ListNode(-1); //trick1 temp -> next = head; head = temp; //trick2 int m = 0; while(end->next != NULL){ m++; end = end -> next; if(m >= n){ cur = cur -> next; temp = temp->next; } } temp -> next = cur -> next; delete cur; return head -> next; } };
相关文章推荐
- 【LeetCode】19. Remove Nth Node From End of List (2 solutions)
- leetcode 之Remove Nth Node From End of List(19)
- LeetCode——19. Remove Nth Node From End of List
- LeetCode 19 Remove Nth Node From End of List
- LeetCode - 19. Remove Nth Node From End of List
- leetcode 19:Remove Nth Node From End of List(15-10-7)
- leetcode - 19.Remove Nth Node From End of List
- LeetCode_19_Remove Nth Node From End of List
- LeetCode(19) Remove Nth Node From End of List
- leetcode19---Remove Nth Node From End of List
- Leetcode 19.Remove Nth Node From End of List
- 【Leetcode】19. Remove Nth Node From End of List
- LeetCode 19 Remove Nth Node From End of List
- LeetCode 19. Remove Nth Node From End of List 解题报告
- [LeetCode]#19 Remove Nth Node From the End of list
- Leetcode 19 Remove Nth Node From End of List 超简洁代码
- 面试题15:链表中倒数第k个节点(Leetcode-19:Remove Nth Node From End of List)
- LeetCode19 - remove nth node from end of list
- Leetcode 19. Remove Nth Node From End of List(python)
- leetcode 19. Remove Nth Node From End of List