这个是leecode第一题大家应该很熟悉吧,一般第一思路就是暴力求解
今天讲一个其他思路用HashMap
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for(int i = 0; i < nums.length; ++i){ if(map.containsKey(target - nums[i])){ return new int[]{map.get(target-nums[i]), i}; } map.put(nums[i],i); } throw new IllegalArgumentException("No two sum solution"); } }
首先new 一个hashmap,然后遍历数组,判断哈希表里是否有给定的值减去数组里的值的键,如果没有则存进哈希表数组值为键,下标为值,如果有,则代表这两个值加起来刚好为给定的目标的值则直接返回。