本文共 929 字,大约阅读时间需要 3 分钟。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]func twoSum(nums []int, target int) []int { sumMap := make(map[int]int) for i := 0; i < len(nums); i++ { if c, ok := sumMap[target-nums[i]]; ok { return []int{ c, i} } sumMap[nums[i]] = i } return []int{ -1,-1}}
//用map辅助查找 时间复杂度O(n)func func2(s []int, tag int) []int { hash := make(map[int]int) for i := 0; i < len(s); i++ { hash[s[i]] = i } for i := 0; i < len(s); i++ { temp := tag - s[i] if _, ok := hash[temp]; ok { if hash[temp] == i { continue } return []int{i, hash[temp]} } } return nil}
这个在面试时就是错误解法!!!
func twoSum(nums []int, target int) []int { for i:=0; i
转载地址:http://eaorb.baihongyu.com/