可以分类讨论。
如果全部元素一样,那么答案就是 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);
    }
}