ref http://www.cnblogs.com/springfor/p/3859618.html
// hash soln
public class Solution {
public int[] twoSum(int[] numbers, int target) {// hashmap soln
if(numbers==null || numbers.length<2) return null;
int[] res = new int[2];
HashMap<Integer,Integer> hm = new HashMap<>();
for(int i=0;i<numbers.length;i++){
if(!hm.containsKey(target-numbers[i])){
hm.put(numbers[i],i);
}else{
res[0]=hm.get(target-numbers[i])+1;
res[1]=i+1;
break;
}
}
return res;
}
}
// 2 pointers soln
int high = numbers.length-1;
int low = 0;
int[] newarr = new int[numbers.length];
System.arraycopy(numbers, 0, newarr, 0, numbers.length);
Arrays.sort(newarr);
while(low<high){
if(target> newarr[low]+newarr[high])
{low++;}
else if(target< newarr[low]+ newarr[high])
{high--;}
else{
break;
}
}
int ind1 = -1;
int ind2 = -1;
for(int i=0;i< numbers.length; i++){
if(numbers[i]==newarr[low] && ind1 == -1){
ind1 = i+1;
}else if(numbers[i]==newarr[high] && ind2 == -1){
ind2 = i+1;
}
}
res[0] = ind1;
res[1] = ind2;
Arrays.sort(res);
return res;