描述
https://leetcode-cn.com/problems/two-sum/
我的解
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, List<Integer>> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {int num = nums[i];if (map.containsKey(target - num)) {int[] ans = new int[2];List<Integer> list = map.get(target - num);ans[0] = i;for (int j : list) {if (j != i) {ans[1] = j;return ans;}}}map.putIfAbsent(num, new ArrayList<>());map.get(num).add(i);}return new int[2];}}
次优解
class Solution {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];}}
最优解
class Solution {public int[] twoSum(int[] nums, int target) {int len = nums.length;int hlen = len/2;int toFind1;int toFind2;int bu;for (int i = 0; i < hlen; i++) {bu = len-i-1;toFind1 = target - nums[i];toFind2 = target - nums[bu];for (int j = i + 1; j < len; j++) {if (nums[j]==toFind1) {return new int[]{i,j};}if(nums[j]==toFind2){return new int[]{j,bu};}}}return null;}}
