两数之和-题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。来源:力扣(LeetCode)
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]来源:力扣(LeetCode)
题解:
1.双层for循环嵌套
var twoSum = function(nums, target) {
for(let i = 0; i < nums.length-1; i++){
////这里j=i+1是为了避免同一个元素使用两遍,并且减少内循环的次数
for(let j = i + 1; j < nums.length;j++){
if(nums[i] + nums[j] === target){
return [i,j]
}
}
}
return []
};

解题思路:
遍历从数组中取出数组中的每一项与这一项后面的值进行运算,如果两数之和正好等于target的值,直接返回对应的下标,如果不等于则继续循环,直到循环完成也没有满足条件,就直接返回空数组。
2.利用map
var twoSum = function(nums, target) {
let myMap = new Map();
for(let i = 0; i < nums.length; i++){
let cur = target - nums[i];
if(myMap.has(cur)){
return [myMap.get(cur),i]
}
myMap.set(nums[i],i)
}
return [];
};

解题思路:
遍历nums中的每一项,第一项进入的时候因为map中还没有内容肯定不满足条件,直接将数组中0下标的值做为键,索引做为值存入map中,从循环到第二次开始判断是否满足条件,如果满足条件直接返回,如果不满足则继续向下执行,如果循环完成都不满足直接返回空数组。
博客围绕LeetCode的两数之和题目展开,给定整数数组和目标值,需找出和为目标值的两个整数下标。介绍了两种题解,一是双层for循环嵌套,遍历数组找满足条件的下标;二是利用map,遍历数组将值和索引存入,判断是否满足条件。
1805

被折叠的 条评论
为什么被折叠?



