算法
LeetCode是一个知名的在线编程学习和算法练习平台,上面有许多经典的算法题目,“两数之和”就是其中一道很基础且经典的题目。
题目描述
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
示例
给定nums = [2, 7, 11, 15],target = 9,因为nums[0] + nums[1] = 2 + 7 = 9,所以返回[0, 1]。
解题思路
• 暴力解法:使用两层嵌套循环遍历数组,对于每个元素,都与它后面的元素相加,检查是否等于目标值。时间复杂度为O(n^2),空间复杂度为O(1)。
• 哈希表法:遍历数组,将每个元素的值和它的下标存入哈希表。在遍历过程中,对于每个元素nums[i],检查target - nums[i]是否在哈希表中。如果在,就找到了两个数的和等于目标值,返回它们的下标。时间复杂度为O(n),空间复杂度为O(n)。
以下是使用Python实现哈希表法的代码:
def twoSum(nums, target):
hash_table = {}
for i, num in enumerate(nums):
if target - num in hash_table:
return [hash_table[target - num], i]
hash_table[num] = i
return []
你可以使用以下方式调用这个函数:
nums = [2, 7, 11, 15]
target = 9
print(twoSum(nums, target))
这段代码定义了一个名为twoSum的函数,它接受一个整数数组nums和一个目标值target作为参数,返回数组中两个数的下标,这两个数的和等于目标值。

浙公网安备 33010602011771号