首页 文章

在Hashmaps上添加功能

提问于
浏览
1

我正在通过使用最好的数据结构学习一些优化技巧,我试图理解这行代码 . 问题来自这里 . https://leetcode.com/problems/two-sum/

所以我的第一次尝试有 O(n^2) 这是不好的所以我决定阅读Hashmap解决方案 .

我对这行代码有疑问:

else {
    map.put(target - nums[i], i);
}

我理解它的方式是我们正在采取这样的 target - nums[i],i 32683_
整个代码在这里:

public static int[] twoSum(int[] nums, int target) {
    Map<Integer,Integer> map = new HashMap<>();

    for (int i = 0; i < nums.length; i++) {
        if (map.containsKey(nums[i])) {
            return new int[]{map.get(nums[i]),i};
        } else {
            map.put(target - nums[i],i);
        }
    }

    return null;
}

任何帮助了解这条线的作用将不胜感激如何操作 map.put(target - nums[i],i);

1 回答

  • 1

    通过将 target - nums[i] 键和 i 值放在 Map 中,你要说的是为了让 nums[i] 参与一对总和为 target 的元素,你必须找到另一个值为 target - nums[i] 的元素,或者换句话说,找到一个元素,其值是 Map 中的一个键(即 map.containsKey(nums[i])true ) .

    因此,一旦找到 i 这样 map.containsKey(nums[i])true ,就知道 nums[i] + nums[map.get(nums[i])] == target ,所以你返回索引对 imap.get(nums[i]) .

相关问题