两数之和

  1. 问题描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
  2. 代码
    • 方法一: 执行用时:132 ms
      1
      2
      3
      4
      5
      6
      7
      8
      for(let i=0 ; i<nums.length ; i++){
      k = i;
      for(let j=i+1 ; j<nums.length; j++){
      if(nums[k]+nums[j] == target){
      return [k , j]
      }
      }
      }
    • 方法二:执行用时:56 ms
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      var map = new Map();//Map是一组键值对的结构
      for(var i=0; i<nums.length ; i++){
      //设置键值对:map.set(key , value)
      map.set(nums[i],i);
      }
      for(var j=0; j<nums.length; j++){
      //map.has()返回布尔值,查询key是否在当前对象中
      //map.get()获取key对应的键值,若没有则返回undefined
      if(map.has(target-nums[j])&&map.get(target-nums[j])!=j){
      return [j,map.get(target - nums[j])];
      }
      }