题目介绍:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
中文:给出一组整数数组和一个具体的数,返回两个相加之和为这个数的数组元素下标。
你可以假设每组输入都有一个具体的解,并且你不能重复使用同一个元素。
解决方法:
1.使用双重循环
工程训练中要求了使用双重循环这种方法,但是自己并没有想到使用这种最简单的办法暴力出所有的和,多亏师兄指点。
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
var i,j,len = nums.length;
for(i = 0; i < len; i++){
for(j = i + 1; j < len; j++){
if(nums[i] + nums[j] === target){
return [i,j];
}
}
}
};
2.使用map
Javascript中提供了map对象,而我使用了普通对象来达到本题的键值映射。
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
var len = nums.length;
var map = {};
for(var i = 0; i < len; i++)
{
if(map[target - nums[i]] != undefined)
{
return [map[target - nums[i]], i];
}
map[nums[i]] = i;
}
};