给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
解析:感觉leetcode把题目的顺序放反了,上一题是II,这一题却是I……
本题与上一题类似。定义两个指针,快指针遍历整个链表,如果与慢指针的值不同,则将慢指针连接到快指针上,然后将慢指针移动到快指针的位置。
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(head==nullptr) return nullptr;
ListNode* pre = new ListNode(-1);
pre->next = head;
ListNode* l = head;
ListNode* r = head->next;
while(r!=nullptr){
if(r->val!=l->val){
l->next = r;
l = l->next;
}
r=r->next;
}
l->next = nullptr;
return pre->next;
}
};