Contents

Leetcode26,83题解

让一个指针去试探重复,另一个指针去记录不重复的元素

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if (nums.empty()){
            return 0;
        }
        int fast = 0;
        int slow = 0;
        for (int i=0;i<nums.size()-1;i++) {
            if (nums.at(fast) != nums.at(fast+1)) {
                nums[slow] = nums.at(fast);
                slow++;
            }
            fast++;
        }
        nums[slow] = nums.back();
        slow++;
        return slow;
    }
};

链表版本

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if (head == nullptr) {
            return nullptr;
        }
        ListNode* slow = head;
        ListNode* fast = head;
        while (fast != nullptr) {
            if (fast->val != slow->val) {
                slow->next = fast;
                slow = fast;
            }
            fast = fast->next;
        }
        slow->next = nullptr;// 断开后续的重复节点
        return head;
    }
};