1_两数之和
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]; // } }