文章

LeetCode - 兩數之和 (Two Sum)

題目描述

給定一個整數數組 nums 和一個目標值 target,請在該數組中找出和為目標值的那兩個整數,並返回它們的索引。

範例

1
2
3
   輸入:nums = [2, 7, 11, 15], target = 9
   輸出:[0, 1]
   解釋:因為 nums[0] + nums[1] == 9,返回 [0, 1]。

解法思路

  1. 使用哈希表來記錄已經遍歷過的數字及其索引。
  2. 每遍歷一個數字,檢查其與目標值的差是否存在於哈希表中,若存在,則返回結果。

範例代碼(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 授權