题目:
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
思路:两个指针,从前向后检查。
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
if (head == nullptr) return head;
ListNode* back = head;
ListNode* front = back->next;
while (back != nullptr) {
while (front != nullptr && front->val == back->val) {
front = front->next;
}
back->next = front;
back = front;
}
return head;
}
};
总结:复杂度为O(n).