LeetCode刷题(C++)——Remove Nth Node From End of List(Medium)
2017-05-06 16:46
501 查看
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.
/**
* 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 == NULL)
return NULL;
ListNode phead(-1);
phead.next = head;
ListNode* fast = head;
ListNode* slow = head;
ListNode* pre = &phead;
for (int i = 0; i < n;i++)
fast = fast->next;
while (fast!=NULL)
{
fast = fast->next;
slow = slow->next;
pre = pre->next;
}
pre->next = slow->next;
free(slow);
return phead.next;
}
};
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.
/**
* 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 == NULL)
return NULL;
ListNode phead(-1);
phead.next = head;
ListNode* fast = head;
ListNode* slow = head;
ListNode* pre = &phead;
for (int i = 0; i < n;i++)
fast = fast->next;
while (fast!=NULL)
{
fast = fast->next;
slow = slow->next;
pre = pre->next;
}
pre->next = slow->next;
free(slow);
return phead.next;
}
};
相关文章推荐
- LeetCode 19. Remove Nth Node From End of List(C++版)
- 【C++】【LeetCode】19. Remove Nth Node From End of List
- LeetCode 之 Remove Nth Node From End of List — C++ 实现
- leetcode_[python/C++]_19. Remove Nth Node From End of List(删除链表末第n个节点)
- [C++]LeetCode: 4 Remove Nth Node From End of List
- 【LeetCode】19 Remove Nth Node From End of List (c++实现)
- 【LeetCode-19】Remove Nth Node From End of List(C++)
- LeetCode Remove Nth Node From End of List C++
- Leetcode_remove-nth-node-from-end-of-list(c++ and python version)
- LeetCode 19 — Remove Nth Node From End of List(C++ Java Python)
- [C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)
- 【LeetCode】19 Remove Nth Node From End of List (c++实现)
- leetcode_c++:链表:Remove Nth Node From End of List(019)
- leetcode 19 Remove Nth Node From End of List C++
- 蜗牛慢慢爬 LeetCode 19. Remove Nth Node From End of List [Difficulty: Medium]
- 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