1.两数之和

2021-02-23  本文已影响0人  VivaLaVida_692c
    *给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。*

1.哈希解法

var twoSum = function(nums, target) {
    let len = nums.length;
    // 创建 MAP
    const MAP = new Map();
    for (let i = 0; i < len; i++) {
        // 提取共用
        let other = target - nums[i];
        // 判断是否符合条件,返回对应的下标
        if (MAP.get(other) !== undefined) return [MAP.get(other), i];
        // 不符合的存入hash表
        MAP.set(nums[i], i)
    }
}
   

2.数组解法(思路一样)

function indexof(arr, val) {
  let index;
  arr.forEach((element, i) => {
    if(element === val){
      index = i;
    }
  });
  return index;
}

function twosumn(arr, target) {
  let arr1 = [];
  for(let i=0; i<target.length; i++){
    let other = target - arr[i];
    if(arr1.includes(other)){
      return [indexof(arr1, other), i];
    }
    arr1.push(arr[i]);
  }
}
上一篇 下一篇

猜你喜欢

热点阅读