下面是我copy过来的原题!据说leetcode里面好多编程题目都是BAT的笔试题,所以为了校招 我就拿来练手了!
Given an array of integers, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution.
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
说好的奋斗呢!
小小的翻译下:
给出一个整型数组,从给定的数组中找到两个数加起来等于给出的目标值 (target) 需要注意的是!这里的返回值起始不是0 开始的!
然后呢!这是我自己写的一个小小代码!
之前我尝试不用hash 直接嵌套两个for循环 结果就是悲剧的time out!次奥 好吧,那我就换成hash!你赢了!
下面的代码我没有注释= = 我这样的菜鸟都能看懂 也许大家就更加OK了!
import java.util.HashMap;
public class Solution {
public int[] twoSum(int[] numbers, int target) {
int indices[] = new int[2];
int temp;
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < numbers.length; i++) {
map.put(numbers[i],i);
}
for (int i = 0; i < numbers.length; i++) {
if(map.get(target-numbers[i])!=null && map.get(target-numbers[i])!=i){
indices[0] = i + 1;
indices[1] = map.get(target-numbers[i])+1;
if(indices[0]>indices[1]){
temp = indices[0];
indices[0] = indices[1];
indices[1] = temp;
}
}
else
continue;
}
return indices;
}
}