83. 删除排序链表中的重复元素
难度简单
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
思路1.0:
(1)通过两个指针判断相邻的两个节点值是否相同
(2)如果存在重复则进行去重
代码1.0:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL || head->next == NULL) return head;
ListNode* ans = new ListNode(-1);
ans->next = head;
ListNode* cur = ans->next;
ListNode* pre = ans;
while (cur != NULL && cur->next != NULL) {
int left = cur->val;
int right = cur->next->val;
//若两个节点相同,删除重复元素
if (left == right) {
cur->next = cur->next->next;
}
//两个节点值不同
else{
pre = pre->next;
cur = cur->next;
}
}
return ans->next;
}
};