可以分类讨论。
如果全部元素一样,那么答案就是 n 。
如果不一样,那么答案是最大次数+1 。
c++代码:
#include <iostream>
using namespace std;
const int N=100100;
int a[N],b[N];
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,i,ans=0;
cin>>n;
for(i=1;i<=n;++i)
cin>>a[i];
for(i=1;i<=n;++i)
++b[a[i]];
for(i=1;i<N;++i)
ans=max(ans,min(n,b[i]+1));
cout<<ans;
return 0;
}
python代码:
N=100100
n=int(input())
a=list(map(int,input().split()))
b=[0]*N
ans=0
for i in range(0,n):
b[a[i]]+=1
for i in range(0,N):
ans=max(ans,min(n,b[i]+1))
print(ans)
java代码:
import java.util.Scanner;
public class ZT12 {
final static int N=100100;
static int[] a=new int[N];
static int[] b=new int[N];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(),i,ans=0;
for(i=1;i<=n;++i)
a[i]=sc.nextInt();
for(i=1;i<=n;++i)
++b[a[i]];
for(i=0;i<N;++i)
ans=Math.max(ans,Math.min(n,b[i]+1));
System.out.print(ans);
}
}