for i := 0; i < len(arr); i++ { temp := arr[i] if temp >= target { continue } another := target - temp
for j := len(arr) - 1; j > i; j-- { if arr[j] == another { return []int{i, j} } } } return []int{} }
func main() { s := []int{2, 7, 11, 15} ans := twoSum(s, 9) fmt.Println(ans) }
别人的思路
构造一个HashMap,通过O(n)的时间复杂度即可找到结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14
func twoSum(arr []int, target int) []int { var table = make(map[int]int) for k, v := range arr { if v >= target { continue } table[v] = k another := target - v if table[another] > 0 { return []int{table[another], k} } } return []int{} }