题目描述
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].
链接:https://www.nowcoder.com/questionTerminal/567f420f12ed4069b7e1d1520719d409
来源:牛客网
方法一:很灵活的方法,扩展性较强,如果将occur<2 改为
occur<3 ,就变成了允许重复最多三次
class Solution {
public:
int removeDuplicates(int A[], int n) {
if(n<=2) return n;
int index=2;//允许重复两次,可以修改为三次
for(int i=2;i<n;i++)
{
if(A[i]!=A[index-2])//允许重复两次,可以修改为三次
A[index++]=A[i];
}
return index;
}
};
方法二:简洁版本
链接:https://www.nowcoder.com/questionTerminal/567f420f12ed4069b7e1d1520719d409
来源:牛客网
class Solution {
public:
int removeDuplicates(int A[], int n) {
int index=0;
for(int i=0;i<n;i++){
if(i>0&&i<n-1&&A[i]==A[i-1]&&A[i]==A[i+1])
continue;
A[index++]=A[i];
}
return index;
}
};