0
点赞
收藏
分享

微信扫一扫

26. 删除有序数组中的重复项(先后指针)

代码小姐 2022-03-11 阅读 85

1.Description

2.Example

3.My Code

我的办法就是记录当前最终的下标index,然后不断寻找第一个不同的数填入nums[index]即可。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int cnt = 0;
        for(int i=0;i<nums.size();i++){
            nums[cnt]=nums[i];
            cnt++;
            int j=i+1;
            while(j<nums.size() && nums[j]==nums[i] ){
                j++;
            }
            if(j>=nums.size())
                return cnt;
            else 
                i=j-1;
        }
        return cnt;
    }
};

 4.Code(先后指针)

先后指针,不需要index计数,nums[fast]和nums[fast-1]比较,slow指向待填的位置

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n = nums.size();
        if(n == 0)
            return 0;
        //nums[0]默认已经填了
        int slow = 1,fast =1;
        while(fast < n){
            if(nums[fast] != nums[fast-1]){
                nums[slow] = nums[fast];
                slow++;
            }
            fast++;
        }
        return slow;
    }
};
举报

相关推荐

0 条评论