- 題目描述
數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。
你可以假設數組是非空的,并且給定的數組總是存在多數元素。
示例 1:
輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
輸出: 2
限制:
1 <= 數組長度 <= 50000
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
-
思路
1、用一個map儲存各個值出現的次數,然後周遊map找出結果值
- 代碼
func majorityElement(nums []int) int {
var tmp = make(map[int]int,len(nums))
for _, v := range nums {
tmp[v] ++
}
var res int
for k, v := range tmp {
if v > len(nums)/2 {
res = k
}
}
return res
}
- 測試代碼
package main
import "fmt"
func majorityElement(nums []int) int {
var tmp = make(map[int]int,len(nums))
for _, v := range nums {
tmp[v] ++
}
var res int
for k, v := range tmp {
if v > len(nums)/2 {
res = k
}
}
return res
}
func main(){
var slice = []int{1,2,3,2,2,2,5,4,2}
res := majorityElement(slice)
fmt.Println(res)
}