题目: 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
代码: 空间复杂度比较低的解法:
func majorityElement(nums []int) int {
countMap := make(map[int]int,0)
for _,v := range nums {
countMap[v]++
if countMap[v] > (len(nums)/2) {
return v
}
}
return -1
}
补充一个map未初始化遇到的错误:
定义 Map
可以使用内建函数 make 也可以使用 map 关键字来定义 Map:
/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type
/* 使用 make 函数 */
map_variable := make(map[key_data_type]value_data_type)
如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对
直接排序取中间数:
func majorityElement(nums []int) int {
sort.Ints(nums)
return nums[len(nums)/2]
}