难度:mid
题目描述
示例
解法1:时间换空间
和上题思路一模一样,把比较条件增加至三个元素之间的比较即可
int removeDuplicates(int* nums, int numsSize) {
// 边界问题
if(numsSize == 1 || numsSize == 2) return numsSize;
int i = 2, j, k = numsSize;
while(1){
if(i == k) break;
if(nums[i] == nums[i-1] && nums[i] == nums[i-2]){ // 元素出现次数超过2两次
for(j = i; j < k - 1; j++)
nums[j] = nums[j+1];
k --;
} else {
i ++;
}
}
return k;
}
时间复杂度: