数据结构与算法之 leetcode 哈希表高频题 两数之和 / 存在重复 解法

数据结构与算法阿木 发布于 2025-07-12 7 次阅读


LeetCode 哈希表高频题解法分析

哈希表是一种基于散列原理的数据结构,它通过将键映射到表中的位置来存储和检索数据。在LeetCode中,哈希表是解决许多高频题目的关键工具。本文将围绕两数之和和存在重复这两个主题,深入分析哈希表在解决LeetCode高频题中的应用。

一、两数之和

1. 题目描述

给定一个整数数组 `nums` 和一个目标值 `target`,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。你不能重复利用这个数组中同样的元素。

2. 解题思路

使用哈希表存储数组中每个元素及其对应的索引。遍历数组,对于每个元素 `nums[i]`,计算 `target - nums[i]`,然后在哈希表中查找这个差值。如果找到,则返回当前索引 `i` 和差值对应的索引。如果未找到,则将当前元素及其索引添加到哈希表中。

3. 代码实现

python

def twoSum(nums, target):


hash_table = {}


for i, num in enumerate(nums):


complement = target - num


if complement in hash_table:


return [hash_table[complement], i]


hash_table[num] = i


return []

测试


nums = [2, 7, 11, 15]


target = 9


print(twoSum(nums, target)) 输出: [0, 1]


二、存在重复

1. 题目描述

给定一个整数数组 `nums`,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 `true`。如果数组中每个元素都不相同,则返回 `false`。

2. 解题思路

使用哈希表存储数组中每个元素出现的次数。遍历数组,对于每个元素,检查其在哈希表中的计数。如果计数大于1,则返回 `true`。遍历结束后,如果没有找到重复元素,则返回 `false`。

3. 代码实现

python

def containsDuplicate(nums):


hash_table = {}


for num in nums:


if num in hash_table:


return True


hash_table[num] = 1


return False

测试


nums = [1, 2, 3, 1]


print(containsDuplicate(nums)) 输出: True


三、总结

通过以上两个例题,我们可以看到哈希表在解决LeetCode高频题中的重要作用。哈希表提供了快速的查找和插入操作,使得我们能够高效地解决两数之和和存在重复这类问题。

在实际应用中,我们需要注意以下几点:

1. 哈希表的初始化:在创建哈希表时,确保其初始容量足够大,以避免频繁的扩容操作。

2. 哈希函数的选择:选择合适的哈希函数可以减少哈希冲突,提高哈希表的性能。

3. 哈希表的遍历:在遍历哈希表时,注意顺序,避免重复遍历。

掌握哈希表在解决LeetCode高频题中的应用,对于提高编程能力和解决实际问题的能力具有重要意义。希望本文能对你有所帮助。