当前位置:   article > 正文

Leetcode 1. 两数之和 JAVA哈希法

Leetcode 1. 两数之和 JAVA哈希法

Leetcode 1.两数之和 JAVA

题目

image-20240317222333730

思路(哈希表法)

拿nums=[2,7,11,15],target=9 这个来说明

我们先遍历到2这个数,target=9,要想两数之和等于这个target,那么我们需要一个值为 7(9-2)的数。这时候我们就需要到我们的哈希表里去找,看看哈希表里有没有7。有的话我们返回2的index和7的index。如果没有找到7的话,我们把2放到哈希表里。继续遍历nums的下一个数7。

由于我们要返回数组下标。所以我们的哈希表里除了要存储对应的值,还要存它们在nums数组中的下标。所以我们要用HashMap

再因为我们是根据值到HashMap里查的,所以我们要将值设为key,下标设为value。

注:题目中说的数组中同一个元素在答案里不能重复出现是指:不能自己加自己。

拿nums=[3,2,4] target=6举例

3+3也等于6,这种情况下要是输出下标的话就是[0,0]了,这种情况是不允许的。

代码

import io.swagger.models.auth.In;

import java.util.HashMap;

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        int[] res = new int[2];

        for (int i = 0; i < nums.length; i++) {
            int temp = target - nums[i];
            if (map.containsKey(temp)) {
                res[0] = i;
                res[1] = map.get(temp);
                break;
            }
            map.put(nums[i], i);
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/277090
推荐阅读
相关标签
  

闽ICP备14008679号