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].
index即新数组的长度
先确定好第一个重复3次元素的位置,然后和Remove Duplicates中的一样,替换的同时,若下一个也相同,则替换。
代码:
class Solution { public: int removeDuplicates(int A[], int n) { if(A==NULL||n==0) return 0; if(n<=2) return n; int index; int count=0;int i; for(i=1;i<n;++i) { if(A[i]==A[i-1]) { ++count; if(count==2) break; }else{ count=0; } } if(i==n) return i; index=i; for(int i=index;i<n;++i) { if(A[i]!=A[i-1]) { A[index]=A[i]; ++index; if(i!=n-1&&A[i]==A[i+1]){A[index]=A[i+1];++index;++i;} } } return index; } };
数组去重算法
本文介绍了一个数组去重的算法实现,允许元素最多重复两次。通过示例说明了如何将一个包含重复元素的有序数组处理为只保留每个元素最多两次重复的新数组,并提供了完整的C++代码实现。
654

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



