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