LeetCode 两数之和:Java 和 Python 解题思路与代码

题目描述

给定一个整数数组 nums 和一个目标值 target,请在数组中找出两个数,使它们的和等于 target,返回这两个数的下标。

假设每个输入只对应唯一的答案,不能重复利用数组中同样的元素。

示例:

输入:nums = [2, 7, 11, 15], target = 9 输出:[0, 1] 解释:nums[0] + nums[1] = 2 + 7 = 9,因此返回 [0, 1]。

思路

利用哈希表,遍历数组 nums,将每个元素和它的下标存入哈希表中。同时,判断 target - nums[i] 是否在哈希表中出现过,如果出现过,就找到了满足条件的两个数,返回它们的下标即可。

Java 代码

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int complement = target - nums[i];
            if (map.containsKey(complement)) {
                return new int[] {map.get(complement), i};
            }
            map.put(nums[i], i);
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

Python 代码

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        d = {}
        for i, num in enumerate(nums):
            complement = target - num
            if complement in d:
                return [d[complement], i]
            d[num] = i
        return []
LeetCode 两数之和:Java 和 Python 解题思路与代码

原文地址: https://www.cveoy.top/t/topic/lOrP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录