Given the head
of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.
Example 1:
Input: head = [1,1,2] Output: [1,2]
Example 2:
Input: head = [1,1,2,3,3] Output: [1,2,3]
Constraints:
- The number of nodes in the list is in the range
[0, 300]
. -100 <= Node.val <= 100
- The list is guaranteed to be sorted in ascending order.
Companies: Amazon, Uber, Google
Related Topics:
Linked List
Similar Questions:
- Remove Duplicates from Sorted List II (Medium)
- Remove Duplicates From an Unsorted Linked List (Medium)
// OJ: https://leetcode.com/problems/remove-duplicates-from-sorted-list
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode *p = head;
while (p) {
ListNode *q = p->next;
while (q && q->val == p->val) {
p->next = q->next;
delete q;
q = p->next;
}
p = p->next;
}
return head;
}
};