题意

最多可以做一次操作,这次操作会把数组里的任意一个元素改为任意值,求出现次数最多元素的最多出现次数

思路

要使得出现次数最多的元素出现的次数尽可能的多,首先要找到最多的出现次数,这里用哈希表维护了每个元素的出现次数,取最大值为ans

最后判断如果ans不等于n的话,说明可以做一次操作使得某个元素变为该值,出现次数+1

Go代码

package main

import (
    "fmt"
)
func max(a,b int) int {
    if a > b {
        return a 
    }
    return b 
}
func main() {
    var n int 
    fmt.Scan(&n)
    a := make([]int,n)
    mp := make(map[int]int,n)
    ans := 1
    for i := 0; i < n; i ++ {
        fmt.Scan(&a[i])
        mp[a[i]]++
        ans = max(ans,mp[a[i]])
    }
    if ans != n {
        ans ++
    }
    fmt.Print(ans)
}