要注意并没有说全是正数,所以最小的数应该是nums[0].
思路:
因为一个有序数组,cur从nums[0]开始,++,跟当前nums[i]比较,
若nums[i]==cur,更改数组,将其赋值到该放数字的位置。
若nums[i]<cur,说明不是连续的递增序列,cur++
若nums[i]>cur,说明有重复的数字,且该数字已经在原数组中更改了,i++
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int number=0;
if(nums.size()==0){
return number;
}
int i=0,j=0,cur=nums[0]; //i表示当前遍历到的位置,j表示当前要修改放入数字的位置
while(i<nums.size()){
if(nums[i]==cur){
nums[j]=cur;
j++;
number++;
i++,cur++;
}
else if(nums[i]>cur){
cur++;
}
else{
i++;
}
}
return number;
}
};