leetcode【数组】-----26.Remove Duplicates from Sorted Array(移除排序数组中重复元素)

版权声明: https://blog.csdn.net/zl6481033/article/details/88355239

1、题目描述

2、分析

        去除数组中的重复元素,不能使用别的数组,返回数组不同的元素个数n,并且在原数组上修改数组使数组前n个元素就是不重复的元素。

        题目要求不能开新的数组,也就是在原数组上进行更改。大致的思路是使用快慢指针,一开始两个指针指向同一个元素,如果两个指针所指的值相同,那么快指针向前走一步,再比较。如果不相等,那么就要将慢指针先向前走一步,然后将新的慢指针指向的元素变成快指针此时的值,之后再将快指针向前走一步。这样在快指针遍历完整个数组的时候,不同的元素个数就是慢指针加1。并且数组前面的值也已经改过了。

3、代码

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if (nums.empty()) return 0;
        int pre = 0, cur = 0, n = nums.size();
        while (cur < n) {
            if (nums[pre] != nums[cur]){
                pre++;
                nums[pre]=nums[cur];
                cur++;
            } 
            else 
                cur++;
        }
        return pre + 1;
    }
};

4、涉及知识点

        数组中双指针的用法很灵活,有时可以是一左一右向中间走这种可以叫做左右指针,也可以同时从一边走根据情况两个指针向前迭代。

猜你喜欢

转载自blog.csdn.net/zl6481033/article/details/88355239