/**
* 俩数之和
*
* @author xiaoxiong
* @create 2020/8/18
* @since 1.0.0
*/
public class Leecode1 {
/**
* 暴力破解
* @param nums
* @param target
* @return
*/
private static int[] getSumOfTwoNum1(int[] nums,int target){
for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target){
return new int[]{i,j};
}
}
}
return null;
}
/**
* 遍历一次,把(target-nums[i],i)存入hashmap,若hashmap中存在最新一个元素,则停止并返回俩数下标
* @param nums
* @param target
* @return
*/
private static int[] getSumOfTwoNum2(int[] nums,int target){
HashMap<Integer,Integer> hashMap = new HashMap<>(nums.length);
for(int i=0;i<nums.length;i++){
if(hashMap.get(nums[i])!=null){
return new int[]{hashMap.get(nums[i]),i};
}
hashMap.put(target-nums[i],i);
}
return null;
}
/**
* 遍历一次,把(nums[i],i)存入hashmap,若hashmap中存在target-最新一个元素,则停止并返回俩数下标
* @param nums
* @param target
* @return
*/
private static int[] getSumOfTwoNum3(int[] nums,int target){
HashMap<Integer,Integer> hashMap = new HashMap<>(nums.length);
for(int i=0;i<nums.length;i++){
if(hashMap.get(target-nums[i])!=null){
return new int[]{hashMap.get(target-nums[i]),i};
}
hashMap.put(nums[i],i);
}
return null;
}
public static void main(String[] args) {
int[] nums = {2,7,11,15};
int target = 17;
System.out.println(Arrays.toString(getSumOfTwoNum3(nums,target)));
}