Two Sum即时讲两个元素相加为指定的target元素,这题比较简单,我直接用的java map类型。将元素压到map元素里,再用get(target-numbers[i])返回value值。
原本我用的java语言,然后做双层循环结果报超时。后来看到有人用C++暴力求解可以过,java效率太低了。
import java.util.HashMap;
import java.util.Map;
public class Solution {
public int[] twoSum(int[] numbers, int target) {
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
int[] tar=new int[2];
tar[0]=0;
tar[1]=0;
for(int i=0;i<numbers.length;i++){
map.put(numbers[i], i); //map赋值
}
for(int i=0;i<numbers.length;i++){
if(map.get(target-numbers[i])!=null){ //map匹配主键并返回value值
if(i<map.get(target-numbers[i])){
tar[0]=i+1;
tar[1]=map.get(target-numbers[i])+1;}
else if(i>map.get(target-numbers[i])){
tar[0]=map.get(target-numbers[i])+1;
tar[1]=i+1;
}
}
}
return tar;
}
}