题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
解题思路:因为数组有序,相等的元素一定相邻,所以可以使用一个变量num统计相等元素的个数,如果当前元素和前一个元素相等,令num++。另外使用一个变量len记录删除后数组的新长度,如果当前正在遍历的元素出现的次数小于等于2,就令nums[len++] = nums[i],否则的话直接跳过这个元素,如果当前元素和前面的元素不相等,就令num=0,重新进行计数,最终len就是返回的结果
AC代码
class Solution {
public int removeDuplicates(int[] nums) {
int len=1;
int num = 0;
for (int i =1;i<nums.length;i++){
if (nums[i]!=nums[i-1]){
num=0;
nums[len++] =nums[i];
}else {
num++;
if (num<2){
nums[len++] = nums[i];
}
}
}
return len;
}
}