[Leetcode] Remove Duplicates from Sorted List II
2017-01-11 20:16
309 查看
描述
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.For example,
Given
1->2->3->3->4->4->5, return
1->2->5.
Given
1->1->1->2->3, return
2->3.
保留链表中只出现一次的元素,将其他元素删除。
分析
这道题是 Remove Duplicates from Sorted List 的改进版,主要的区别在于前一题对出现多次的元素会保留,这道题不会。我们可以采用减而治之的思想,对于
deleteDuplicates(head)这个问题,如果前两个元素的值不同,那么问题就变成了
deleteDuplicates(head->next);如果前两个元素相同,那么找到第一个不同值的元素p,问题变成了
deleteDuplicates(p)。对于平凡的情况,是链表为空或者只有一个元素,直接返回。
代码
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if (!head || !head->next) return head; if (head->val != head->next->val) { head->next = deleteDuplicates(head->next); return head; } while (head->next && head->next->val == head->val) head = head->next; return deleteDuplicates(head->next); } };
相关问题
Remove Duplicates from Sorted List相关文章推荐
- [leetcode刷题系列]Remove Duplicates from Sorted List II
- leetcode 38: Remove Duplicates from Sorted List II
- LeetCode-Remove Duplicates from Sorted List II
- [LeetCode]Remove Duplicates from Sorted List II
- LeetCode: Remove Duplicates from Sorted List II
- LeetCode: Remove Duplicates from Sorted List II
- [leetcode] Remove Duplicates from Sorted List II
- LeetCode:Remove Duplicates from Sorted List II
- LeetCode 82: Remove Duplicates from Sorted List II
- [LeetCode] Remove Duplicates from Sorted List、Remove Duplicates from Sorted List II
- leetcode Remove Duplicates from Sorted List I && II
- LeetCode: Remove Duplicates from Sorted List II
- [leetcode] Remove Duplicates from Sorted List II
- [LeetCode] Remove Duplicates from Sorted List II, Solution
- [面试真题] LeetCode:Remove Duplicates from Sorted List I & II
- [leetcode]Remove Duplicates from Sorted List II
- [leetcode] Remove Duplicates from Sorted List II
- LeetCode-Remove Duplicates from Sorted List II
- LeetCode | Remove Duplicates from Sorted List II
- [Leetcode] Remove Duplicates from Sorted List II