给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋
次的元素。
说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。
示例 1:
输入: [3,2,3] 输出: [3]
示例 2:
输入: [1,1,1,3,3,2,2,2] 输出: [1,2]
思路:使用map
func majorityElement(nums []int) []int {
times := len(nums)/3
res := []int{}
maps := make(map[int]int)
for _,v := range nums{
if _, ok := maps[v]; ok {
maps[v] += 1
} else{
maps[v] = 1
}
}
for k,v := range maps{
if v > times{
res = append(res, k)
}
}
return res
}