给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的
假设给出的数组中只存在唯一解
例如:
给出的数组为 {20, 70, 110, 150},目标值为90
输出 index1=1, index2=2
思路:没有说是排序之后的,就需要正常遍历。或者是构建一个map,直接一次for循环即可,以空间换时间。
package main
/**
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
func twoSum( numbers []int , target int ) []int {
// write code here
var ret []int
num := len(numbers)
for i:= 0; i < num - 1; i++ {
need := target - numbers[i]
for j := i + 1; j < num; j ++ {
if need == numbers[j] {
ret = append(ret, i + 1, j + 1)
return ret
}
}
}
return ret
}
这篇博客讨论了一种在给定整数数组中寻找两个数,使它们的和等于目标值的方法。提供的Go函数`twoSum`通过使用哈希表在O(n)的时间复杂度内找到解决方案,避免了二次遍历。这种方法以空间换取时间,适用于未排序的数组,并且假设数组中存在唯一解。例如,对于数组{20, 70, 110, 150}
319

被折叠的 条评论
为什么被折叠?



