题目大意:与26比较。删除数组中重复两次以上的数,剩下的数只有这种形式{1,1,2}。
法一:将重复2次以内的数都保留,重复2次以上的数都跳过删除,其中第一次遇见没有重复的数时,应该更新计数器。代码如下(耗时2ms):
1 public int removeDuplicates(int[] nums) { 2 int k = 1; 3 int cnt = 1; 4 for(int i = 1; i < nums.length; i++) { 5 //如果前后数相等 6 if(nums[i] == nums[i - 1]) { 7 //查看重复次数是否在2的范围内 8 if(cnt < 2) { 9 nums[k++] = nums[i]; 10 cnt++; 11 } 12 else { 13 cnt++; 14 } 15 } 16 //如果前后数不想等,放心保留,将计数器重置 17 else { 18 nums[k++] = nums[i]; 19 cnt = 1; 20 } 21 } 22 return k; 23 }