LeetCode 两数之和:Java 和 Python 解题思路与代码
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 []
原文地址: https://www.cveoy.top/t/topic/lOrP 著作权归作者所有。请勿转载和采集!