leetcode-83. 删除排序链表中的重复元素

本文最后更新于:2022年7月30日 晚上

指定 cur 指针指向头部 head
当 cur 和 cur.next 的存在为循环结束条件,当二者有一个不存在时说明链表没有去重复的必要了
当 cur.val 和 cur.next.val 相等时说明需要去重,则将 cur 的下一个指针指向下一个的下一个,这样就能达到去重复的效果
如果不相等则 cur 移动到下一个位置继续循环
时间复杂度:O(n)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* dummy = new ListNode(0);
dummy->next = head;

ListNode* cur = head;

while (cur != NULL && cur->next != NULL)
{
if (cur->val == cur->next->val)
cur->next = cur->next->next;
else cur = cur->next;
}

return dummy->next;
}
};