算法基础题(7):俩数之和

立扣题:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
分析:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。


代码实现

这里我是用到了Map方法,Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键

      let nums = [2, 7, 11, 15],
            target = 9;

        function twoSum(nums, target) {
            let map = new Map();   //声明一个新的Map对象

            for (let i = 0; i < nums.length; i++) {
                let a1 = nums[i];
                let a2 = target - a1;
                if (map.has(a2)) {   //map.has是判断是否存在此数据  
                    return [map.get(a2),i]   //用get来获取map里面的数据
                }else{
                    map.set(a1,i)  //设置map数据
                }
            }
        }

        console.log(twoSum(nums,target));  //[0,1]

近期在刷立扣,有兴趣的小伙伴可以去尝试一下,很有意思!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容