非严格递增即存在重复数的递增数组,要求删除重复数
使用一个值来记录重复数个数,将不重复的向前移动一定位置
int removeDuplicates(int* nums, int numsSize) {
int k=0;
int i=0;
for(i=1;i<=numsSize-1;i++)
{
if(nums[i]==nums[i-1])
{
k++;
}else
{
nums[i-k]=nums[i];
}
}
return numsSize-k;
}
耗时是12ms,使用题解的双指针的方法提交后也是12ms
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int k = 0;
for (int i = 0; i < nums.size(); i++) {
if (!i || nums[i] != nums[i - 1]) {
nums[k++] = nums[i];
}
}
return k;
}
};