【牛客刷題】數組中出現次數超過一半的數字

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章