[R5C] 众数
- 难度 入门
- 时限 1s
- 空限 512m
- 计数
数据规模:,。
思路
用数组 统计数字 在 中的出现次数,那么 。
再用数组 统计 中每个值 的出现次数, 的范围是 (出现次数不可能超过 )。 的众数就是使 最大的 ;扫描时用 >= 更新答案,即可在平局时取到最大的 。
复杂度:时间 (),空间 。
仓颉实现
import std.convert.*
import std.env.*
main() {
let reader = getStdIn()
let n = Int64.parse(reader.readln().getOrThrow())
let a = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p => Int64.parse(p) })
let cnta = Array<Int64>(10000001, { _ => 0 })
for (v in a) {
cnta[v] = cnta[v] + 1
}
let cntb = Array<Int64>(n + 1, { _ => 0 })
for (v in a) {
cntb[cnta[v]] = cntb[cnta[v]] + 1
}
var best: Int64 = 0
var ans: Int64 = 0
for (x in 1..(n + 1)) {
if (cntb[x] >= best) {
best = cntb[x]
ans = x
}
}
println(ans)
}