【牛客刷题】数组中出现次数超过一半的数字
本题的链接:BM51 数组中出现次数超过一半的数字
题目很好理解,思路也很简单,只需要遍历数组,将所有的元素出现的次数用Map记录下来就可以,最后遍历Map,找到那个出现次数超过数组长度一半的元素打印就可以:
package main
/**
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
func twoSum(numbers []int, target int) []int {
// write code here
var m = make(map[int]int)
for i := 0; i < len(numbers); i++ {
v, ok := m[target-numbers[i]]
if ok {
return []int{v + 1, i + 1}
} else {
m[numbers[i]] = i
}
}
return []int{}
}
这个解法的时间复杂度是O(n),基本上是符合题目要求的。