初级算法 数组 一、从排序数组中删除重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例 :

 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1,2.

你不需要考虑数组中超出新长度后面的元素。
 

#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int size = 0;
        if (nums.size() == 0)
        {
            return 0;
        }
        for (int i = 1; i < nums.size(); i++)
        {
            if (nums[size] != nums[i])
            {
                nums[++size] = nums[i];
            }
        }
        nums.erase(nums.begin() + size + 1, nums.end());
        return nums.size();
        
    }
};
int main()
{
    vector<int> nums = { 1,1,2 };
    Solution ans;
    cout << ans.removeDuplicates(nums) << endl;
    for (int i = 0; i < nums.size(); i++)
    {
        cout << nums[i] << " ";
    }
    system("pause");
}


 

猜你喜欢

转载自blog.csdn.net/weixin_42094220/article/details/81432114