Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array A = [1,1,1,2,2,3]
,
Your function should return length = 5
, and A is now [1,1,2,2,3]
.
思路:跟 Remove Duplicates from Sorted Array 相似,只是要加入一个flag让一个数存在两次;注意,cur永远在i的后面;
class Solution {
public int removeDuplicates(int[] nums) {
if(nums == null || nums.length == 0) return 0;
if(nums.length == 1) return nums.length;
int cur = 0;
boolean hasTwo = false;
for(int i = 1; i<nums.length; i++){
if(nums[cur] != nums[i]){
cur++;
nums[cur] = nums[i];
hasTwo = false;
} else {
// nums[cur] == nums[i];
if(!hasTwo){
cur++;
nums[cur] = nums[i];
hasTwo = true;
}
}
}
return cur+1;
}
}