[Java][Leetcode middle] 80. 删除有序数组中的重复项 II
删除重复元素,最多只保留两个
1. 计数法
- 第一个元素直接加入
- 当与前一个元素相同时,计数器+1,不同时计数器恢复1;
只有计数器小于2时,记录元素;
public int removeDuplicates2(int[] nums) {int cnt = 1;int dup = 1;for(int i = 1; i < nums.length; i++) {if(nums[i] == nums[i-1]) {dup++;}else{dup = 1;}if(dup <=2){nums[cnt++] = nums[i];}}return cnt;}
2. 快慢指针法
/*** 双指针法*/
public int removeDuplicates3(int[] nums) {int cnt = 2; // first two ele must in the arrayfor(int i = 2; i < nums.length; i++) {if(nums[i] != nums[cnt-2]) {nums[cnt++] = nums[i];}}return cnt;
}