- 用于返回数组的下标值,可以利用反向思维,对数据进行减少判断
创建一个Map(),将要比较的数组中每个数所在的位置和数用Map数据结构存储起来,然后使用for循环来和map里面的数据进行比较,这里要注意一下,因为不能重复使用数组里面位置相同的数字,必须要对比一下map里面存储的位置与当前比较的数字的位置是否相同
var twoSum = function(nums, target) {
let map = new Map();
let arr = new Array()
for(let i in nums){
map.set(
nums[i],
i
)
}
for(let j = 0; j < nums.length - 1; j++){
if(map.has( target - nums[j] ) && map.get( target - nums[j]) != j ){
arr.push( j , map.get( target - nums[j] ) );
return arr
}
}
}
var twoSum = function(nums, target) {
for (var i = 0; i < nums.length; i++) {
var dif = target - nums[i];
// j = i + 1 的目的是减少重复计算和避免两个元素下标相同
for (var j = i + 1; j < nums.length; j++) {
if(nums[j] == dif)
return [i,j];
}
} };
var twoSum = function(nums, target) {
let arr = nums;
let arrs = new Array()
for(let i = 0; i < arr.length; i++){
for(let j = i+1; j < arr.length; j++){
if ( arr[i] + arr[j] === target) {
arrs.push(i, j)
return arrs
}
}
}
}
最近学习的时候发现Map真的是yyds 大家真的可以多用Map结构哟~