从leetcode的排序数组中删除重复项,为什么它是错误的答案?

Remove Duplicates from Sorted Array from leetcode, why it wrong answer?

本文关键字:为什么 错误 答案 排序 leetcode 数组 删除      更新时间:2023-10-16

这是从leetcode中删除排序数组中的重复项正确答案是

   class Solution {
public:
    /**
     * @param A: a list of integers
     * @return : return an integer
     */
    int removeDuplicates(vector<int> &nums) {
        // write your code here
        int i=1;
        while(i<nums.size()){
            if(nums[i] != nums[i-1])
                ++i;
            else
                nums.erase(nums.begin()+i);
        }
        return nums.size();
    }
};

我像这样修改代码

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int i = 1;
        while( i < nums.size()) {
            if( nums[i] != nums[i+1])
            i++;
            else
            nums.erase(nums.begin() + i);
        }
        return nums.size();
    }
};

我不知道为什么错了,输入:[1,1]输出:[1,1]期望:[1]

,像这样:

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

输入:[1,2]输出:[2]预期:[1,2]

访问向量是从零开始的(就像内置的低级数组一样),所以将i的初始值设置为零(而不是1)。在专业代码中,我希望通过对向量使用标准排序和唯一算法来完成这一点。

相关文章: