给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

  • 第一种方法
var twoSum = function (nums, target) {
    let map = new Map();
    let arr = new Array()
    for (let i in nums) {
        map.set(
           nums[i],
           i
        )
     }

     for (let j = 0; j < nums.length - 1; j++) {
         if (map.has(target - nums[j]) && map.get(target - nums[j]) != j) {
            arr.push(j, map.get(target - nums[j]));
               return arr
         }
     }

}

-第二种方法

var twoSum = function(nums, target) {
    const map = {}
    for (let i = 0; i < nums.length; i++){
	if(map[target - nums[i] ] >= 0){
	    return [ map[target - nums[i] ], i]
	}
	map[nums[i]] = i;            
    }
}
posted @ 2020-05-31 22:15  毛小星  阅读(779)  评论(0编辑  收藏  举报