class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int n = numbers.size();
if (n == 0) return 0;
/*
就好比,假如秦国强于六国和,那么秦国更能血拼过(齐国战赵国+其他四国)。
假如,秦国不强于六国和,则血拼结果不是确定的。
所以最后需要验证。
*/
int num = numbers[0], count = 1;
for (int i = 1; i < n; i++) {
if (numbers[i] == num) count++;
else count--;
if (count == 0) {
num = numbers[i];
count = 1;
}
}
// Verifying
count = 0;
for (int i = 0; i < n; i++) {
if (numbers[i] == num) count++;
}
if (count * 2 > n) return num;
return 0;
}
};
找出数据中超过一半的数字
猜你喜欢
转载自blog.csdn.net/xiziyunqi/article/details/82623009
今日推荐
周排行