026 删除有序数组中的重复项

官方答案

class Solution {
public:
    int removeDuplicates(vector& nums) {
        int n = nums.size();
        if (n == 0) {
            return 0;
        }
        int fast = 1, slow = 1;
        while (fast < n) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
};

思路:双指针
fast指针是数组遍历指针,
slow指针是存放指针,只有遍历的fast指针前后两位不同时,slow才会存放当前位的数字。

1.一般来说取数组长度最好用一个变量存放,不然要多次调用size()函数。

你可能感兴趣的:(026 删除有序数组中的重复项)