哈希表:
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
其实就是用自定义Key: value的方法来找到匹配项;思路在代码里
哈希表:(while和for都写了,注掉的部分是while)
var twoSum = function(nums, target) {
// 使用哈希表存储合适差值
let hasMap = {};
let result = [];
for(let i=0;i<nums.length;i++) {
let currentNum = nums[i]; // 第一个值
console.log('currentNum',currentNum);
let chaZhi = target - currentNum; //目标值减去第一个值 = 差值
console.log('chaZhi',chaZhi);//差值
console.log('hasMap',hasMap); //把差值作为key放入,用于相加等于target时索引对应的index
console.log('hasMap[chaZhi]',hasMap[chaZhi]); //对应的index
if(hasMap[chaZhi] != undefined) { //匹配成功
result = [hasMap[chaZhi], i];
console.log('成功',result);
return result;
}
console.log('i',i)
hasMap[currentNum] = i; //匹配失败生成键值对{'currentNum':i}
console.log('失败',hasMap);
}
return result;
// 使用哈希表存储合适差值
// let map= {};
// let len = 0;
// let result = [];
// while (len<nums.length) {
// let currentNum = nums[len]; // 第一个值
// console.log('currentNum',currentNum);
// let needNum = target - currentNum; //目标值减去第一个值 = 差值
// console.log('needNum',needNum);//差值
// console.log('map',map); //把差值作为key放入,用于相加等于target时索引对应的index
// console.log('map[needNum]',map[needNum]); //对应的index
// if(map[needNum] != undefined) {
// result = [map[needNum], len];
// console.log('result',result);
// return result;
// }
// map[currentNum] = len++;
// console.log('1111',map[currentNum]);
// }
// return result;
};
暴力破解(双层for循环):
var twoSum = function(nums, target) {
for(var i=0;i<nums.length;i++) {
for(var j=i+1;j<nums.length;j++) {
if(nums[i] + nums[j] === target) {
return [i,j];
}
}
}
};