当前位置:实例文章 » 其他实例» [文章]力扣75——哈希表/哈希集合

力扣75——哈希表/哈希集合

发布人:shili8 发布时间:2025-03-03 22:55 阅读次数:0

**力扣75 —— 哈希表/哈希集合**

### 题目描述给定一个整数数组 `nums` 和一个目标值 `target`,请在该数组中找到和为 `target` 的两个数,并返回它们的下标。

你可以假设每个输入只包含唯一的数字。这个问题的答案必须是下标的列表(下标从1 开始)。

### 示例* 输入:nums = [2,7,11,15], target =9 输出:[0,1]
解释:因为 nums[0] + nums[1] ==9且0 和1 是这两个数字在数组中的下标。
* 输入:nums = [3,2,4], target =6 输出:[1,2]
解释:因为 nums[1] + nums[2] ==6且1 和2 是这两个数字在数组中的下标。

### 思路这个问题可以使用哈希表来解决。我们首先遍历整个数组,将每个数字及其下标存储到哈希表中。然后,我们再次遍历整个数组,检查是否存在一个和为 `target` 的数字对。如果找到这样的对,我们将它们的下标添加到答案列表中。

###代码

class Solution:
 def twoSum(self, nums: List[int], target: int) -> List[int]:
 # 创建一个空哈希表 num_dict = {}
 # 遍历整个数组,将每个数字及其下标存储到哈希表中 for i, num in enumerate(nums):
 if num not in num_dict:
 num_dict[num] = [i]
 else:
 num_dict[num].append(i)
 # 遍历整个数组,检查是否存在一个和为 target 的数字对 for i, num in enumerate(nums):
 complement = target - num # 如果找到这样的对,我们将它们的下标添加到答案列表中 if complement in num_dict:
 return [num_dict[num][0], num_dict[complement][0]]
 # 如果找不到这样的对,则返回空列表 return []


### 注释* 我们首先创建一个空哈希表 `num_dict` 来存储数字及其下标。
* 然后,我们遍历整个数组,将每个数字及其下标存储到哈希表中。如果一个数字已经存在于哈希表中,我们将其下标添加到列表中。
* 接下来,我们再次遍历整个数组,检查是否存在一个和为 `target` 的数字对。如果找到这样的对,我们将它们的下标返回作为答案。
* 如果找不到这样的对,则返回空列表。

### 时间复杂度时间复杂度为 O(n),其中 n 是数组长度。我们首先遍历整个数组,将每个数字及其下标存储到哈希表中,然后再次遍历整个数组,检查是否存在一个和为 `target` 的数字对。

### 空间复杂度空间复杂度为 O(n)。我们创建了一个哈希表来存储数字及其下标,每个数字都可能被存储一次,因此空间复杂度为 O(n)。

其他信息

其他资源

Top