数组中出现次数超过一半的数字(摩尔投票)
Last updated
Last updated
问题简述
思路1:排序
排序后,数组中间位置的数一定满足题意;
时间复杂度 O(NlogN)
;
思路2:计数
一次遍历,记录每个数出现的次数;
空间复杂度 O(N)
;
思路3:“摩尔投票法”
“摩尔投票法”的核心思想是一一抵消;
假设已知目标数为 x,遍历时若出现一次 x 记 +1
票,否则为 -1
票;
推论1:最终票数和必大于 0;
推论2:若前 n 个数的票数和为 0,那么剩余部分依然满足推论1,即目标数字依然为 x;
思路4:分治
本题使用分治在时间和空间上都不是最优,仅用于理解分治的思想;