当前位置:实例文章 » 其他实例» [文章]leetcode_001两数之和

leetcode_001两数之和

发布人:shili8 发布时间:2025-01-23 07:02 阅读次数:0

**两数之和**

给定一个整数数组 `nums` 和一个目标整数 `target`,找出两个数字的下标,使得它们加起来等于 `target`。你可以假设每个输入只有一种解。

示例:

* 输入:`nums = [2,7,11,15]`, `target =9`
输出:`[0,1]`

**解决方案**

我们将使用哈希表来存储数字及其下标。具体来说,我们将在哈希表中存储每个数字的值和其下标。

class Solution:
 def twoSum(self, nums: List[int], target: int) -> List[int]:
 # 创建一个空哈希表 num_dict = {}
 # 遍历数组中的每个数字 for i in range(len(nums)):
 # 计算当前数字与目标值之间的差值 diff = target - nums[i]
 # 如果该差值在哈希表中存在,则返回下标 if diff in num_dict:
 return [num_dict[diff], i]
 # 否则,将当前数字及其下标添加到哈希表中 num_dict[nums[i]] = i # 如果没有找到解决方案,则返回空列表 return []


**注释**

* 我们首先创建一个空哈希表 `num_dict` 来存储数字及其下标。
* 然后,我们遍历数组中的每个数字,并计算当前数字与目标值之间的差值 `diff`。
* 如果该差值在哈希表中存在,则返回下标,因为我们找到了两个数字,它们加起来等于 `target`。
* 否则,我们将当前数字及其下标添加到哈希表中,以便在后续遍历时可以检查是否找到解决方案。
* 如果没有找到解决方案,则返回空列表。

**时间复杂度**

该算法的时间复杂度为 O(n),其中 n 是数组中的元素数量。我们只需要遍历一次数组,因此时间复杂度是线性的。

**空间复杂度**

该算法的空间复杂度为 O(n)。我们使用一个哈希表来存储数字及其下标,大小与输入数组相同。

**总结**

两数之和问题可以使用哈希表解决。我们首先创建一个空哈希表,然后遍历数组中的每个数字,并计算当前数字与目标值之间的差值。如果该差值在哈希表中存在,则返回下标。否则,我们将当前数字及其下标添加到哈希表中,以便在后续遍历时可以检查是否找到解决方案。

其他信息

其他资源

Top