给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
样例
给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。
思路:对数组遍历一次,并设置一个计数器,每当遍历前后元素不相同,计数器加1,并将当前遍历的元素覆盖到计数器对应在数组中位置。遍历完后,重新调整数组长度大小。
vector.resize(n) 调整容器的长度大小,使其能容纳n个元素。如果n小于容器的当前的size,则删除多出来的元素。否则,添加采用值初始化的元素。
class Solution {
public:
/*
* @param nums: An ineger array
* @return: An integer
*/
int removeDuplicates(vector<int> &nums) {
if(nums.empty()) return 0;
int count=0;
for(int i=1;i<nums.size();i++){
if(nums[i]!=nums[count]){
nums[++count]=nums[i];
}
}
nums.resize(count+1);
return count+1;
}
};