1.5 KiB
1.5 KiB
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:
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, seeLeetcode Reverse-Linked-List#Solution
Solution
One pointer method
/**
* 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;
}
};