LeetCode 19: 删除链表的倒数第N个节点 C++实现
2019-05-30 16:08
387 查看
思路
两次遍历算法:第一次遍历得到链表长度len,第二次遍历到(len - n)后删除下一节点(要删除的节点位于len - n + 1)
一次遍历算法:双指针,保持恒定间距(此处设置为n)同时移动
代码实现
//两次遍历 class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* curr = head; int len = 0; while(curr != NULL){ len++; curr = curr->next; } int i = 1; curr = head; if (n == len) return head->next; while(1){ if(i == len - n){ break; } curr = curr->next; i++; } curr->next = curr->next->next; return head; } };
//一次遍历 class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* dummy = new ListNode(0); dummy->next = head; ListNode* begin, * end; begin = end = dummy; int i = 0; while(end->next != NULL){ end = end->next; i++; if(i > n){ begin = begin->next; } } begin->next = begin->next->next; return dummy->next; }; };
相关文章推荐
- [C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)
- LeetCode 19. 删除链表的倒数第N个节点
- leetcode19 Remove Nth Node From End of List(删除链表的倒数第N个节点)
- LeetCode题解(python)-19. 删除链表的倒数第N个节点
- Leetcode 19 删除链表的倒数第N个节点【链表】
- leetcode_[python/C++]_19. Remove Nth Node From End of List(删除链表末第n个节点)
- 【Leetcode】19. 删除链表的倒数第N个节点
- LeetCode-19删除链表的倒数第n个节点
- Leetcode 19.删除链表的倒数第N个节点
- LeetCode:快慢指针实现删除链表的倒数第N个节点
- [Leetcode] 19. 删除链表的倒数第N个节点 java
- leetcode 19、删除链表的倒数第n个节点(双指针)
- 【leetcode】删除链表的倒数第N个节点(python实现)
- Leetcode做题日记:19. 删除链表的倒数第N个节点(PYTHON)
- [LeetCode-19] Remove Nth Node From End of List(删除链表中倒数第N个节点)
- LeetCode(Java版)19. 删除链表的倒数第N个节点
- leetcode19--删除链表中倒数第n个节点
- leetcode 19 删除链表的倒数第N个节点(快慢指针)
- LeetCODE 19 删除链表的倒数第N个节点
- leetcode19删除链表的倒数第N个节点(C语言版)