一、題意
給定一個整數數組 nums 和一個目標值 target,要求你在數組中找出和為目標值的那兩個整數,并返回它們的數組下標。你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解題思路:
我們可以使用哈希表來解決這個問題。具體步驟如下:
遍歷數組 nums,對于每個元素 num,計算 target - num 的值。
檢查這個差值是否已經存在于哈希表中:
如果存在,說明我們已經找到了兩個數的和為 target,返回這兩個數的下標。
如果不存在,將當前元素 num 及其下標存入哈希表中。
二、代碼
1.代碼的實現
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# 測試代碼
nums = [2, 7, 11, 15]
target = 9
print(twoSum(nums, target))
總結
enumerate() 函數:enumerate() 是 Python 的內置函數,它的作用是將一個可迭代對象(如列表、元組、字符串等)組合為一個索引序列,同時列出數據和數據的索引。它返回的是一個枚舉對象,該對象包含了一系列的元組,每個元組由索引和對應的元素值組成。
以下是一個簡單的示例,展示 enumerate() 函數的使用:
nums = [2, 7, 11, 15]
for i, num in enumerate(nums):
print(f"索引: {i}, 值: {num}")
這段代碼的輸出結果如下:
索引: 0, 值: 2
索引: 1, 值: 7
索引: 2, 值: 11
索引: 3, 值: 15