题目链接:力扣(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;}
}