周一算法题之「两数之和」

48 阅读1分钟

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定nums = [2, 7, 11, 15], target = 9 因为nums[0] + nums[1] = 2 + 7 = 9 所以返 回[0, 1]

var nums = [2, 7, 11, 15], target = 9
function anwser(arr, target) {
    let map = {}
    // 将其转换为key:value格式
    for (let i = 0; i < arr.length; i++) {
	map[arr[i]] = i
    }
    console.log(map,'map');//{2: 0, 7: 1, 11: 2, 15: 3}
    // 将其target减去每一项,如果有就返回当前项和d的vlaue
    for (let i = 0; i < arr.length; i++) {
        var d = target - arr[i]
        console.log(map[d])
	if (map[d]) {
            return [i, map[d]]
	}
    }
    return new Error('404 not found')
}
console.log(anwser(nums,target));