Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array A = [1,1,1,2,2,3],
Your function should return length = 5, and A is now [1,1,2,2,3].
Similar with Remove Duplicates, here use to pointers to track duplicates numbers.
Here array is sorted, if the array is not sorted, we could use hashmap.
Java
public int removeDuplicates(int[] A) {
if(A.length <3) return A.length;
int pre =1, cur =1;
int count =1;
for(cur =1; cur< A.length ;cur++){
if(A[cur] == A[cur-1]){
if(count >=2){
continue;
}
else{
count++;
}
}else{
count = 1;
}
A[pre] = A[cur];
pre++;
}
return pre;
}c++
int removeDuplicates(int A[], int n) {
if(n < 3) return n;
int pre = 1, cur = 1;
int count = 1;
for(cur = 1; cur< n; cur++){
if(A[cur] == A[cur-1]){
if(count >=2){
continue;
}else{
count++;
}
}else{
count = 1;
}
A[pre] = A[cur];
pre++;
}
return pre;
}
数组去重算法

本文介绍了一种算法,该算法可以在保持元素相对顺序的同时,将数组中重复出现超过两次的元素去除,并确保数组仍然保持有序状态。通过使用双指针技巧,此算法能够有效地处理这一问题。
743

被折叠的 条评论
为什么被折叠?



