C++ 从leetcode的排序数组中删除重复项,为什么回答错误?;

C++ 从leetcode的排序数组中删除重复项,为什么回答错误?;,c++,C++,这是从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;

这是从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();
    }
};
类解决方案{
公众:
/**
*@param A:整数列表
*@return:返回一个整数
*/
int-removeDuplicates(向量和nums){
//在这里编写代码
int i=1;

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

您需要在外部条件的基础上增加I,而在内部,除此之外,还需要从零开始。而不是从1开始。向量类似于数组。for(int I=1;I[2]输入:[1,1,1]输出:[1,1]预期:[1]删除项时,可能不加i+?
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();
    }
};
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();
    }
};