Two Sum --两个数的和
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].
意思:给一目标target,看数组中那两个数相加等于这个数。
思路:
1.建立哈希表,将数组中存放在哈希表中,将n2 = target -nums[i],target减去其中一个数,得到另外一个数,然后去哈希表查找这个数,若查找则return,否则继续遍历。
2.JavaScript中数组的indeOf(),不过时间超时;
1.Java代码如下:
class Solution { public int[] twoSum(int[] nums, int target) { int[] result = new int[2]; int n2; int len = nums.length; Integer index; //包装类,避免类型转换 Map<Integer,Integer> map = new HashMap<Integer,Integer>(len);//建立哈希表 for(int i = 0;i < len;i++){ map.put(nums[i],i); //将数组存放在哈希表中 } for(int i = 0;i<len;i++){ n2 = target - nums[i]; //得到其中一个数 index = map.get(n2); //在哈希表中查找 if(index!=null&&index>i){ //有返回值符合条件时执行 result[0] = i; result[1] = index; break; } } return result; } }
2.JavaScript数组方法实现:
var twoSum = function(nums, target) { var reArr=[]; for(var i=0;i<nums.length;i++){ var diff=target-nums[i]; if(reArr.indexOf(diff)>-1){ return [i,reArr.indexOf(diff)]; } reArr.push(nums[i]) } return null