【牛客刷题】数组中出现次数超过一半的数字

本题的链接: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),基本上是符合题目要求的。

posted @ 2023-02-09 23:17  wingsless  阅读(11)  评论(0编辑  收藏  举报