day7:两数之和(简单)
思路:
- 不考虑重复值的情况下,目标值为【target-当前项的值】,然后查找【target-当前项的值】的下标并且返回即可。
- 考虑有重复值的情况:自定义一个查找数组下标的方法,返回符合所有符合条件值得下标。
var twoSum = function (nums, target) {
for (let i = 0; i < nums.length; i++) {
let index = nums.indexOf(target - nums[i]);
if (index != i && index != -1) {
return [i, index];
}
}
};
console.log(twoSum([3, 2, 4], 6));
执行结果
考虑重复值:
var twoSum = function (nums, target) {
for (let i = 0; i < nums.length; i++) {
let arr = findIndex(nums, target - nums[i]);
for (let j = 0; j < arr.length; j++) {
if (i != arr[j]) {
return [i, arr[j]];
}
}
}
};
var findIndex = function (array, num) {
let indexArr = [];
array.forEach((item, index) => {
if (item === num) {
indexArr.push(index);
}
});
return indexArr;
};
执行结果
使用map存储得方式实现
var twoSum1 = function (nums, target) {
let map = new Map();
let result = [];
nums.forEach((item, index) => {
let flag = map.get(target - item);
if (flag === undefined) {
//说明没找到
map.set(item, index);
} else {
result.push(flag, index);
}
});
return result;
};
网友评论