zoukankan      html  css  js  c++  java
  • leetcode[1]两数之和

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

    示例:

      给定 nums = [2, 7, 11, 15], target = 9

      因为 nums[0] + nums[1] = 2 + 7 = 9
      所以返回 [0, 1]

    这里我讲一下我的思路:

     * 1.创建一个map
     * 2.for循环遍历nums数组
     * 3.用target减nums[i],以计算哪个数能跟当前的数字相加得到target
     * 4.检查map里有没有这个数,如果有则返回结果;
     *    如果没有则把nums[i]当作key,i当作value放入map中
    解题过程:
      map{}
      i=0;  nums[0]=2;     com=7;    查找map中有无 7 (无) 将{2:0} 存入map{}
      i=1;    nums[1]=7;     com=2;    查找map中有无 2 (有) 将2对应的value:0和i返回 [0,1]
      i=2;    nums[2]=11;   com=-2,   查找map中有无 -2(无) 将{11,2} 存入map{2:0,11:2}
      i=3;    nums[3]=15;   com=-6;   查找map中有无 -6(无) 将{15,3} 存入map{2:0,11:2,15:3}
    代码:
        var twoSum = function (nums, target) {
          // 创建一个map用来存放{key,value}
          const map = new Map()
          for (let i = 0; i < nums.length; i++) {
            // 获取到差值
            const complete = target - nums[i]
            // 判断map中有没有这个差值
            if (map.has(complete)) {
              // 有的话,直接返回这个差值的value,和i
              return [map.get(complete), i]
            } else {
              // 没有的话,将数据和i存进map
              map.set(nums[i], i)
            }
          }
          // 什么都没有找到就返回空数组
          return []
        };
        console.log(twoSum([2,7,3,5],9))

    语法小贴士~

    map.has() :

      参数:key必填. 用来检测是否存在指定元素的键值.

      返回值:Boolean如果指定元素存在于Map中,则返回true。其他情况返回false

    map.get():

      参数:key必填. 想要获取元素的键.

      返回值:返回一个Map对象中与指定键相关联的值,如果找不到这个键则返回undefined,

  • 相关阅读:
    css定位
    表格常见属性
    细说Ajax--异步请求
    DOM事件与jQuery事件的是非纠葛
    简单特效-切换背景图片
    javascript之--offset家族
    javascript高级特性
    参数的传递
    javascript中函数浅析
    初识Javascript
  • 原文地址:https://www.cnblogs.com/yaya-003/p/12698552.html
Copyright © 2011-2022 走看看