lintCode题目:给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。
写在前面
这个题目其实不难,有多种方法,不过需要注意的就是效率问题了。
算法1
我想到的简单方法就是直接两个循环。
public int[] twoSum(int[] numbers, int target) {
// write your code here
for(int i=0; i<numbers.length; i++){
for(int j=i+1; j<numbers.length; j++){
if (target == (numbers[i] + numbers[j])){
int[] result = {i, j};
return result;
}
}
}
int[] result = {};
return result;
}
这个算法跑完lintCode上面的testcase花了2013ms。
算法2
使用一个循环加一个hashmap来记录的方式。
public int[] twoSum(int[] numbers, int target) {
// write your code here
HashMap<Integer, Integer> map = new HashMap<&g