package 数组;
import java.lang.reflect.Array;
import java.util.Arrays;
/**
* https://leetcode-cn.com/problems/two-sum/
*
* @author Huangyujun
* 方法一:暴力法:
*/
public class _1_两数之和 {
public int[] twoSum(int[] nums, int target) {
// Arrays.sort(nums); //对数组nums 进行排序,不能排序,排序导致下标结果改变
//通过map 结构呢? 一对又一对的情况
int[] index = new int[2];
//两层循坏
for(int i = 0; i < nums.length - 1; i++) {
int second = target - nums[i];
for(int j = i + 1; j <= nums.length - 1; j++) {
if(second == nums[j]) {
index[0] = i;
index[1] = j;
return index;
}
}
}
return null;
}
/**
* 方法2:通过 键值对的哈希表Map 结构,通过 值获取到下标 hashtable.get(target - nums[i])
* 且通过:hashtable.containsKey(target - nums[i]) 获取到second 这个数是否存在
* 遍历过程中(边找边put 进去键值对【值,下标】),没有找到,就继续put
* @param nums
* @param target
* @return
*/
// public int[] twoSum(int[] nums, int target) {
// Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
// for (int i = 0; i < nums.length; ++i) {
// if (hashtable.containsKey(target - nums[i])) {
// return new int[]{hashtable.get(target - nums[i]), i};
// }
// hashtable.put(nums[i], i);
// }
// return new int[0];
// }
}