Título: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/
Las soluciones 1
y 26 son similares, utilizando un método similar de dos punteros.
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == nullptr || head->next == nullptr) return head;
ListNode* s = head;
ListNode* f = head->next;
while (f != nullptr) {
if (s->val == f->val) {
ListNode* tmp = f->next;
s->next = tmp;
delete f;
f = tmp;
} else {
s = f;
f = f->next;
}
}
return head;
}
};
La solución 2 se
debe a que el orden está ordenado, por lo que un puntero es ancho.
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == nullptr) { return head; }
ListNode* cur = head;
while (cur->next != nullptr) {
if (cur->val == cur->next->val) {
ListNode* tmp = cur->next;
cur->next = tmp->next;
delete tmp;
} else {
cur = cur->next;
}
}
return head;
}
};
EOF