【leetcode】1. 两数之和(easy)

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

思路

  • 建立哈希映射<数值,下标>;
  • 遍历数组,如果HashMap中存在键target-nums[i],那么返回两个数值;
  • 将访问过但未存储到HashMap的元素添加进去。

解答

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer,Integer> hm = new HashMap<>();
        for(int i=0; i<nums.length; i++){
            if(hm.containsKey(target-nums[i]))
                return new int[]{i, hm.get(target-nums[i])};
            if(!hm.containsKey(nums[i]))
                hm.put(nums[i],i);
        }
        return new int[]{0, 0};
    }
}

你可能感兴趣的:(leetcode,数据结构,leetcode,算法,数据结构)