两数相加

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

 

 第一种:暴力枚举,双层循环遍历。省略代码。 ----100ms

第二种:二分查找线性结构(出现bug,还在修改)

第三种:静态map结构 ---76ms

 const map = new Map();
   for(let i = 0;i < nums.length;i++){
       map.set(nums[i],i);
   }
   for(let i = 0;i < nums.length;i++){
       const diff = target - nums[i];
       if(map.has(diff) && map.get(diff) !== i){
           return [i,map.get(diff)];
       }
   }

  

第四章,动态map结构 ----84ms

 const map = new Map();
    for (let i = 0; i < nums.length; i++) {
        const num1 = nums[i];
        const num2 = target - nums[i];
        if(map.has(num2)){
            return [map.get(num2),i];
        }else{
            map.set(num1,i);
        }
    }

  

第五种,字典对象结构----100ms

  var i = 0,
        len = nums.length,
        dict = {};
    for (; i < len; i++) {
        var dif = target - nums[i];
        if (dif in dict) {
            return [dict[dif], i];
        };
        dict[nums[i]] = i;
    };

 总结,多用数据结构,事件算法。

posted @ 2021-03-01 15:59  Jiox  阅读(59)  评论(0)    收藏  举报