leetcode第一题: 两数之和
2019-10-08 本文已影响0人
全栈弄潮儿
Two Sum(两数之和)
题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解析
let twoSum = function(nums, target) {
let current = null;
for(let i = 0; i < nums.length; i ++){
current = nums.indexOf(target - nums[i])
// If the index of the number we are looking for is not -1, meaning it exists
// AND the current index is not the same as ourself, return the ith index and the index of the desired other index.
if(current != -1 && (current != i)) {
return [i,current]
}
}
};
let nums = [2, 7, 11, 15];
twoSum(nums, 9); // [0, 1]
扩展题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出所有
和为目标值的那 两个 整数,并返回他们的数组下标。
例如:
let nums = [1, 2, 4, 5, 6, 8, 9];
twoSum(nums, 7);
return [{firstIndex: 0, anotherIndex: 4}, {firstIndex: 1, anotherIndex: 3}]
解析:
let twoSum = function(nums, target) {
let current = null;
let result = [];
nums.sort();
for (let i = 0; i < nums.length/2 - 1; i++) {
current = nums.indexOf(target - nums[i]);
if (current != -1 && (current != i)) {
let item = {firstIndex: i, anotherIndex: current};
result.push(item);
}
}
return result;
};
let nums = [1, 2, 4, 5, 6, 8, 9];
twoSum(nums, 7); //[{firstIndex: 0, anotherIndex: 4}, {firstIndex: 1, anotherIndex: 3}]
经典前端面试题每日更新,欢迎参与讨论,地址:https://github.com/daily-interview/fe-interview。
更多angular1/2/4/5、ionic1/2/3、react、vue、微信小程序、nodejs等技术文章、视频教程和开源项目,请关注微信公众号——全栈弄潮儿。
微信公众号