leetcode_83. 删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 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;
    }
};
发布了112 篇原创文章 · 获赞 0 · 访问量 368

猜你喜欢

转载自blog.csdn.net/qq_37292201/article/details/103885487