[LeetCode1. 两数之和][简单] | 刷题打卡

172 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9

输出:[0,1]

解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6

输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6

输出:[0,1]  

提示:

  • 2 <= nums.length <= 103
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • 只会存在一个有效答案

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/tw…

二、 思路分析

  1. 创建字典表Map

  2. 遍历数组,匹配符合信息的目标值 target - currentValue

  3. 匹配成功返回两个数值下标

  4. 匹配失败就将选手的信息放入创建的字典表Map中

三、AC代码

var twoSum = function(nums, target) {
    let m = new Map()
    for(let i=0;i<nums.length;i++){
        let currentValue = nums[i]
        let other = target - currentValue;
        if(m.has(other)) return [m.get(other),i]
        m.set(currentValue,i)
    }
};

四、总结

需要充分理解Map

Map 对象:Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

Map属性和方法

  • size属性 返回map结构的成员个数 map.size
  • Map.prototype.set(key, value) 添加map值,整个Map结构(适合链式)如果已有key就覆盖,没有就新建
  • Map.prototype.get(key) 获取value值,没有就undefined
  • Map.prototype.has(key) 判断是否存在Map对象之中,返回一个布尔值
  • Map.prototype.delete(key) 删除某个键,返回一个布尔值
  • Map.prototype.clear() 清除所有成员,没有返回值
  • Map.prototype.keys() 返回遍历的键名
  • Map.prototype.values() 返回遍历的键值
  • Map.prototype.entries() 返回遍历的所有成员
  • Map.prototype.forEach() 遍历Map的所有成员

本文正在参与掘金团队号上线活动,点击 查看大厂春招职位