删除重复元素,最多只保留两个
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 array
for(int i = 2; i < nums.length; i++) {
if(nums[i] != nums[cnt-2]) {
nums[cnt++] = nums[i];
}
}
return cnt;
}