
方法1:數(shù)組排序后,用對(duì)撞指針?lè)?br>
《(9)Go對(duì)撞指針?lè)ㄇ髷?shù)組兩數(shù)之和》
參考http://www.itdecent.cn/p/610d0c362eb9
方法2:查找表,時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(n)
// 每次只查找 i 前面的
// map里面存儲(chǔ)的是target-nums[i]的差值,遍歷下個(gè)元素時(shí),先去map看能不能取到,能取到則有
func twoSum2(nums []int, target int) []int {
// m: key為target-num[i]的差值,val為索引i
m := make(map[int]int)
for i, v := range nums {
if j, ok := m[v]; ok {
return []int{j, i}
}
m[target-v] = i
}
return nil
}

提交leetcode,通過(guò)