美文网首页
LeetCode 真题 1.两数之和

LeetCode 真题 1.两数之和

作者: 暖男Gatsby | 来源:发表于2019-10-29 14:11 被阅读0次

                                     LeetCode  真题 1.两数之和       

    描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]。

    诚然此题如果纯粹用双重遍历暴力解决,但是这样做又怎么能对得起一个极客的职业素养呢。那么如何解决掉它?

    这种寻找目标的问题如果要找到对应的目标,只是一昧的穷举,那么运算将会无穷大,那么在已知目标值的前提下求取目标值所在数组的索引。显而易见,用散列表是最佳选择。

    可以先用哈希表Map绑定key,value键值对,然后遍历元素的时候,计算出目标值,用目标值匹配哈希表,为空则不存在,否之则有目标值,并输出对应的元素下标。

    var tosum = function(nums,target){

    var map = new Map();

    var collect = [];

    for(var i=0;i<nums.length;i++){

        var a = target - nums[i];                       //获取目标值,每个元素木不知不同

        if(map.has(a)&&map.get(a)!=i){    //若哈希表包含此元素的目标值,且目标值对应的索引不等于i(即找的对象不等于元素本身)

            collect.push(map.get(a));     //获取这两个索引

            collect.push(i);

        }

        map.set(nums[i],i);                    //添加键值对

        return collect;

    }

    相关文章

      网友评论

          本文标题:LeetCode 真题 1.两数之和

          本文链接:https://www.haomeiwen.com/subject/ewyymctx.html