LeetCode 第一题两数相加 js相关问题

刷题第一题 两数之和 回顾
在这里插入图片描述
简单级别,思路也很简单,分为暴力法与hashMap法.
刚开始我很自然,就用了暴力法,还很繁琐的暴力法,代码在这…
在这里插入图片描述
在已经定义好函数头的函数里写,上面三个参数与返回值不要忽略,要心中有数.
首先,定义数组可以这样
var array = new Array(); 与其他面向对象语言一样,构造函数基本包括,

  1. 传入数字Array(3),表示数组长度.
  2. 传入具体值,Array(“a”,“b”);
    不过一般就只用 var a = []; 直接这样定义数组.方便简洁
    然后就是一个嵌套循环,很好理解.
    最主要的还是第二种方法体现的思想,hashmap.
    在这里插入图片描述
    这人let 是定义一个本地变量 即 for循环用完就销毁了.
    dif 是每个数与这个固定结果 target 的差值,因而也是一个固定值.
    我的理解是既然这两个值能够关联起来,就可以用一个map 来存储其关系.
    下两行就是建立map 与 检测 了,
    拿着nums数组里的第一个数,我去map里找,怎么找,下标啊!既然是关系映射,就得那这个关系去找啊,关系是啥,差值,因而,拿这个差值当下标去map里找,和我有关系的这个之在不在,在哪,在不再就是是否为undefined,在哪就是里面保存的值.
    所以找到了就是里面存了一个下标,拿着下标回nums里去取值或者直接返回下标
    这就是 下一句的含义;
    如果map里dif 位置 不是undefined ,说明之前建立了关系了,那我就拿着这个map[dif],里的内容去nums里找那个关系数,怎么找,当然还是下标,所以存的就是下标,本题直接返回了这个下标,表示 我 num[i] 这个数 与 num[map[dif]] 这个数 有关系!!! 当然不是那种关系…咳 ,就只是个和为target的关系…
    如果…没找到和num[i] 有关系过的数咋办 =.=!
    很简单 在map里留个求关系贴, map[nums[i]] = i;
    合拍的自然顺着关系就来找你了.
    总结一下 建立map 这种思想.

每一个需要建立关系的元素,在map里留下自己的关系需求和位置信息.
*
比如 关系是相加为10.
3来了: M,我的需求是7
Map 去map[7] 看了一眼 空的
Map : 不好意思 7没来过.
3 : 好吧 ,我的位置是 x ,让7来找我.
Map : 慢走 不送.
Map 加了一个 3的小柜子,存了3 的地址 ,Map[3] = x;
静等.
终于 ,7 来了.看了一眼Map关系
7: M,我的需求是 3.
Map 去map[3] 看了一眼,挂着🔒
Map : 您好,3来过,请稍侯,我去取出他给你的地址
Map 拿来了地址x.
然后
return
*

over
2019.12.13 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值