前端面试算法《两数之和》

63 阅读1分钟

这道题也是上次面试百度之后,对当时的算法题答的不好的原因进行了反思,因为上次的那道题不能用枚举的方法,不是说枚举的方法不对,是因为数据量一旦很大的话,算法的耗时是比较严重的,时间复杂度大大增加。

利用哈希表

哈希表的查找效率远远的高于其他数据结构,而ES6恰好新增了一种数据结构map,能够很好的模拟哈希表,方法当然还是遍历数组,只不过这次是将遍历的当前元素与目标元素进行做差,存入哈希表,如此进行,如果下次遍历到的元素做差后和哈希表中的数重复,那么这两个数就是符合要求的数啦。因此,代码如下:

    function findIndex(nums,target){
        let hash=new Map();
        for(let i=0;i<nums.length;i++){
            let cur=target-nums[i];
            if(!hash.has(cur)){
                hash.set(nums[i],i);
            }else{
                return new Array(hash.get(cur),i);
            }
        }
    }
    module.export={
        findIndex:findIndex
    }

以上就是本文的主要内容啦,如有帮助,欢迎评论交流哦。