題目摘要
給定整數陣列與目標值,找到兩個數使其總和等於目標並回傳索引。可置換為實際題意與限制說明。
解題思路
這裡可以描述用哈希表記錄已訪元素的索引,遍歷陣列時檢查 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) 用於雜湊表。
易錯點
- 避免在同一索引重複使用同一元素;需先檢查再寫入雜湊。
- 確認輸出順序與題目要求一致(多組解時通常可回傳任一組)。