给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums=[2,7,11,15],target=9 因为 nums[0]+nums[1]=2+7=9 所以返 回 [0, 1]
我的答案:
function fn(nums, target) {
const len = nums.length;
for(let i = 0; i < len; i++) {
for(let j = i + 1; j < len; j++) {
if(nums[i] + nums[j] === target) {
return [i, j]
}
}
}
}
参考答案:
function anwser(arr, target) {
let map = {};
for (let i = 0; i < arr.length; i++) {
map[arr[i]] = i;
}
for (let i = 0; i < arr.length; i++) {
var d = target - arr[i];
if (map[d]) {
return [i, map[d]];
}
}
return new Error('404 not found');
}
总结:
1.参考答案减少了时间复杂度
2.参考答案在查找不到对应下标值时有返回对应提示