169 多数元素 简单
发布者:admin 发表于:446天前 阅读数:606 评论:0

169. 多数元素 简单

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入:[3,2,3]
输出:3

示例 2:

输入:[2,2,1,1,1,2,2]
输出:2

进阶:

尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

代码参考:

package main

import "fmt"

func main() {
    fmt.Println(majorityElement([]int{6, 5, 5}))
    // fmt.Println(majorityElement([]int{3, 2, 3}))
    // fmt.Println(majorityElement([]int{2, 2, 1, 1, 1, 2, 2}))
}

func majorityElement(nums []int) int {
    m := make(map[int]int)
    for _, num := range nums {
        m[num]++
    }
    major := len(nums) / 2
    for num, times := range m { // map 的 range 顺序不定  ok ?
        if times > major {
            return num
        }
    }
    return 0
}