两数之和

发布时间 2023-11-27 10:10:00作者: 小码子

这个是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,然后遍历数组,判断哈希表里是否有给定的值减去数组里的值的键,如果没有则存进哈希表数组值为键,下标为值,如果有,则代表这两个值加起来刚好为给定的目标的值则直接返回。