出处:https://github.com/GeniusVJR/LearningNotes/blob/master/Part3/Algorithm/LeetCode/two-sum.md
import java.util.HashMap;
/**
* 输入一个整数数组,提供一个值,求出数组中两个数之和为该值的下标
* 思路:
* 通过HashMap保存每次数组元素与值的差和元素下标;
* 然后往后遍历的时候,判断元素的值是否存在于HashMap中,是则表示这两个数之和等于该值
* @author Administrator
*
*/
public class TwoSum {
public static int[] twoSum(int[] data,int target){
int[] result = null;
HashMap<Integer, Integer> map = new HashMap<>();
for(int i=0;i<data.length; i++){
if (map.get(data[i]) != null) {
result = new int[]{map.get(data[i]),i};
}else {
map.put(target-data[i], i);
}
}
return result;
}
public static void main(String[] args) {
int[] data = {6,3,14,8};
int target = 20;
int[] result = twoSum(data, target);
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
}