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.
public class Solution { public int removeDuplicates(int[] nums) { //题意与Remove Duplicates from Sorted Array不同,说明需要一个变量count代表重复的次数 //start代表符合要求的最大索引,遍历数组时,需要与start位置上的进行比较,如果不等,直接赋值移位 //如果相等,需要判断次数是否满足要求,如果不超过2,则依旧赋值移位,如果超过,直接continue不理会 if(nums==null||nums.length<1) return 0; int start=0; int count=1; for(int i=1;i<nums.length;i++){ if(nums[i]!=nums[start]){ nums[++start]=nums[i]; count=1; }else if(count<2){ count++; nums[++start]=nums[i]; } } return start+1; } }