LeetCode: 面试题 17.10. 主要元素
题目要求: 你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内完成吗?
使用 哈希表 , 时间复杂度: O ( N ) O(N) O(N) 空间复杂度: O ( N ) O(N) O(N)
空间还不满足
需要用到摩尔投票法 >> 已补
博客指路:
发现之前剑指offer中写过这题。
摩尔投票法是默认必定存在众数,但该题可能不存在众数,所以摩尔投票法得到的候选数,应该进行验证。
哈希表暴力
func majorityElement(nums []int) int {
n := len(nums)
m := make(map[int]int)
for i := 0; i < n; i++ {
m[nums[i]]++
if m[nums[i]] > (n / 2){
return nums[i]
}
}
return -1
}