博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给出指定值,获取数组中和相同的元素并输出
阅读量:7105 次
发布时间:2019-06-28

本文共 1382 字,大约阅读时间需要 4 分钟。

遍历

* @param {number[]} nums* @param {number} target* @return {number[]}*/// var twoSum = function(nums, target) {//     let final = [];//     for(let i = 0;  i < nums.length; i++){//         for(let j = i + 1; j < nums.length; j++){//             let sum = nums[i] + nums[j];//             if(sum === target){//                 final.push(i, j);//             }//         }//     }//     return final;// };// twoSum([2, 7, 11, 15], 9) 复制代码

完整hash表

  • 此处存在如果相同的key存在,使用map后者覆盖前者的情况,因此全部推入,最后做去重处理
var twoSum = function(nums, target){    let map = new Map();    let final = [];    for(let i = 0; i < nums.length; i++){        map.set(nums[i], i);    }    for(let i = 0; i < nums.length; i++){        let complement = target - nums[i];        if(map.has(complement) && map.get(complement) !== i){            final.push(i, map.get(complement))        }    }    return [...new Set(final)];}twoSum([3,3], 6); 复制代码

单向hash表

  • 单向推入,比较一个推入一个,避免重复key的情况
// var twoSum = (nums, target) => {//     let final = [];//     let map = new Map();//     for(let i = 0; i < nums.length; i++){//         let complement = target - nums[i];//         if(map.has(complement)){//             final.push(map.get(complement));//             final.push(i);//         }//         map.set(nums[i], i);//     }//     return final;// }// twoSum([2, 7, 11, 15], 9);复制代码

转载于:https://juejin.im/post/5c9ca2065188251e2242171c

你可能感兴趣的文章
高阶函数、闭包、匿名函数
查看>>
我的友情链接
查看>>
使用Python调度Kubernetes
查看>>
Nginx配置实例
查看>>
mave 配置文件里面的setting 配置仓库
查看>>
我的友情链接
查看>>
oracle 取余/求积
查看>>
CCNA OSPF特性、术语
查看>>
windows 系统如何开启“上帝模式”的方法
查看>>
我的友情链接
查看>>
Python - 装饰器使用过程中的误区
查看>>
Java——容器(Collection)
查看>>
常见的RAID磁盘阵列
查看>>
IDS和IPS的比较
查看>>
进程间通信之消息队列
查看>>
计算2/1+3/2+5/3+8/5+.......+(共20项)
查看>>
动态开辟二维数组
查看>>
Kendo UI开发教程:使用Kendo UI库实现对象的继承
查看>>
《Linux学习并不难》使用RPM软件包(3):安装RPM软件包
查看>>
富士康机器人上岗 科技从来都不给你开玩笑
查看>>