两数相加
题目:给定一个整数数组 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; };
总结,多用数据结构,事件算法。

浙公网安备 33010602011771号