剑指 Offer 39. 数组中出现次数超过一半的数字
题目:
思路:
1.排序,中位数必定是过半的数字,时间复杂度O(nlogn)。
2.HashMap,这个是最先想到的
3.分治
4.摩尔投票法,yyds
如何理解摩尔投票法:
题解:
摩尔题解:
class Solution {
public int majorityElement(int[] nums) {
int num = nums[0];
int count = 0;
for (int i = 0; i < nums.length; i++) {
if (count == 0) {
num = nums[i];
}
if (num != nums[i]) {
count--;
} else {
count++;
}
}
return num;
}
}
再写一个分治的: