Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3.
It doesn't matter what you leave beyond the new length.
把重复两次以上的数字拿掉,返回新的数组长度,要求原数组前n个元素是满足条件的新数组。
用两个指针去判断即可,一个用来标记已重复的位置,另一个判断当前元素是否可以与前一个交换
public class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length<3)return nums.length;
int count = 0;
int idx = 0;
for(int i=0;i<nums.length;i++){
if(i>0&&nums[i]==nums[i-1]){
count++;
if(count>=3){
continue;
}
}
else count=1;
nums[idx++] = nums[i];
}
return idx;
}
}
本文介绍了一个算法问题的解决方案:在一个已排序的数组中允许每个元素最多出现两次,并返回修改后的数组长度。通过双指针技巧,高效地实现了这一功能。

被折叠的 条评论
为什么被折叠?



