LeetCode 0001 Two Sum

示範筆記版型:題目摘要、思路、程式碼與複雜度的填寫格式。

題型:陣列 / 雜湊
難度:Easy
語言:C++

題目摘要

給定整數陣列與目標值,找到兩個數使其總和等於目標並回傳索引。可置換為實際題意與限制說明。

解題思路

這裡可以描述用哈希表記錄已訪元素的索引,遍歷陣列時檢查 target - nums[i] 是否存在。補充邊界條件與替代解法。

C++ 程式碼

// 以 vector 回傳索引,保持簡潔可讀
class Solution {
public:
    vector twoSum(vector& nums, int target) {
        unordered_map seen; // 值 -> 索引
        for (int i = 0; i < nums.size(); ++i) {
            int need = target - nums[i];
            if (seen.count(need)) {
                return {seen[need], i};
            }
            seen[nums[i]] = i;
        }
        return {};
    }
};

複雜度

時間 O(n),空間 O(n) 用於雜湊表。

易錯點

  • 避免在同一索引重複使用同一元素;需先檢查再寫入雜湊。
  • 確認輸出順序與題目要求一致(多組解時通常可回傳任一組)。