Leetcode-19. Remove Nth Node From End of List
2017-03-04 21:37
621 查看
题目
删除链表的倒数第n个元素思路
双指针p1, p2,p1先移动到链表的第n个元素,然后p1和p2一起移动,当p2到达末尾时,p1指向的元素即为要删除的元素的前一个元素。注意处理n大于链表长度的情况。代码
解法1class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { if(NULL==head || n<1) return head; ListNode* p = head; while(p) { n--; p = p->next; } if(n == 0) return head->next; if(n < 0) { p = head; while(++n) p = p->next; p->next = p->next->next; } return head; } };
解法2
class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { if(NULL==head || n<1) return head; ListNode *h = new ListNode(0); h->next = head; ListNode* p1 = h, *p2 = h; for(int i=0; i<n && p1; i++, p1 = p1->next); if(NULL == p1) return head; while(p1->next) { p1 = p1->next; p2 = p2->next; } p2->next = p2->next->next; return h->next; } };
相关文章推荐
- [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, Easy] 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
- 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 (2 solutions)
- [Leetcode 19] 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 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