229. 求衆數 II 難度 中等

給定一個大小爲 的數組,找出其中所有出現超過 ⌊ 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
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章