80. Remove Duplicates from Sorted Array II

题目链接

题目大意:与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     }
View Code
原文地址:https://www.cnblogs.com/cing/p/9182224.html