天天看點

劍指 Offer 39. 數組中出現次數超過一半的數字(golang版)

  • 題目描述
數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。

你可以假設數組是非空的,并且給定的數組總是存在多數元素。

示例 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)
}