From 026953d9bd74213c883ba5c59d490151e28b42fe Mon Sep 17 00:00:00 2001 From: juan Date: Thu, 16 Jun 2022 14:32:37 +0800 Subject: [PATCH] vault backup: 2022-06-16 14:32:37 --- ...code Remove-Duplicates-From-Sorted-List.md | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 CS notes/pages/Leetcode Remove-Duplicates-From-Sorted-List.md diff --git a/CS notes/pages/Leetcode Remove-Duplicates-From-Sorted-List.md b/CS notes/pages/Leetcode Remove-Duplicates-From-Sorted-List.md new file mode 100644 index 0000000..2113ce7 --- /dev/null +++ b/CS notes/pages/Leetcode Remove-Duplicates-From-Sorted-List.md @@ -0,0 +1,71 @@ +# Leetcode Remove-Duplicates-From-Sorted-List + +#### 2022-06-16 14:21 + +> ##### Data structures: +> #DS #linked_list +> ##### Difficulty: +> #coding_problem #difficulty-easy +> ##### Additional tags: +> #leetcode +> ##### Revisions: +> Initial encounter: 2022-06-16 + +##### Related topics: +```expander +tag:#linked_list +``` + + + +##### Links: +- [Link to problem]() +___ +### Problem + +#### Examples + +#### Constraints + +### Thoughts + +This can be implemented using recursion and iteration, like [[Leetcode Reverse-Linked-List]]. +Recursion is not recommended, since it will take up O(n) space. +In iteration, one pointer or 2 pointers can be used. + +To understand the ptr->next->next = ptr->next, see[[Leetcode Reverse-Linked-List#Solution]] + +### Solution + +One pointer method +```cpp +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode *deleteDuplicates(ListNode *head) { + ListNode *ptr = head; + while (ptr != NULL && ptr->next != NULL) { + if (ptr->val == ptr->next->val) { + // Duplicate found + auto tmp = ptr->next; + ptr->next = ptr->next->next; + delete tmp; + // I done set ptr to ptr->next, in case new ptr->next is duplicated + } else { + ptr = ptr->next; + } + } + return head; + } +}; +``` +