题目:
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
例如: 给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路一:遍历数组,从第0个元素开始,依次和后面的数相加,如果和等于目标值,则返回这两个索引;
var getIndex1 = (arr, target) => {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (target == arr[i] + arr[j]) {
return [i, j];
}
}
}
return null;
};
思路二:遍历数组,从当前索引开始检索目标值减去当元素所得的值,如果索引大于0,则返回这两个索引
var getIndex2 = (arr, target) => {
for (var i = 0; i < arr.length; i++) {
var ret = target - arr[i];
var index = arr.indexOf(ret, i);
if (index > 0) {
return [i, index];
}
}
return null;
};