給定一個大小爲 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
}