8.找出整数型数组中占比超过一半的数
小于 1 分钟
8.找出整数型数组中占比超过一半的数
问题描述
小 R 从班级中抽取了一些同学,每位同学都会给出一个数字。已知在这些数字中,某个数字的出现次数超过了数字总数的一半。现在需要你帮助小 R 找到这个数字。
测试样例
样例 1:
输入:
array = [1, 3, 8, 2, 3, 1, 3, 3, 3]
输出:
3
样例 2:
输入:
array = [5, 5, 5, 1, 2, 5, 5]
输出:
5
样例 3:
输入:
array = [9, 9, 9, 9, 8, 9, 8, 8]
输出:
9
实现代码:
function solution(array: number[]): number {
const map: Map<number, number> = new Map();
let result = 0;
let maxCount = 0;
for (const num of array) {
const count = (map.get(num) || 0) + 1;
map.set(num, count);
if (count > maxCount) {
maxCount = count;
result = num;
}
}
// 检查是否存在出现次数超过一半的数字
if (maxCount > array.length / 2) {
return result;
} else {
throw new Error("No number appears more than half the time.");
}
}
function main() {
// Add your test cases here
console.log(solution([1, 3, 8, 2, 3, 1, 3, 3, 3]) === 3);
}
main();