LeetCode - 兩數之和 (Two Sum)
題目描述:
給定一個整數數組 nums
和一個目標值 target
,請在該數組中找出和為目標值的那兩個整數,並返回它們的索引。
範例:
1
2
3
輸入:nums = [2, 7, 11, 15], target = 9
輸出:[0, 1]
解釋:因為 nums[0] + nums[1] == 9,返回 [0, 1]。
解法思路:
- 使用哈希表來記錄已經遍歷過的數字及其索引。
- 每遍歷一個數字,檢查其與目標值的差是否存在於哈希表中,若存在,則返回結果。
範例代碼(Python):
1
2
3
4
5
6
7
8
def twoSum(nums, target):
num_map = {}
for i, num in enumerate(nums):
diff = target - num
if diff in num_map:
return [num_map[diff], i]
num_map[num] = i
return []
時間複雜度:
O(n),其中 n 是數組中的元素數量。哈希表查找時間是 O(1),所以整體運行時間是線性的。
本文章以 CC BY 4.0 授權