題目: LeetCode - 1. Two Sum

題目說明

給一個陣列和一個 target,找出陣列中兩數相加等於 targetindex

解題思路

使用 unordered_map<int, int> 存放資料,key 存放 nums 裡面的元素的值,value 存放該值的 index。當每次訪問 nums 的元素時,若 target - nums[i] 的值在 map 中有出現表示找到答案,即為 map[target - nums[i]]i,若沒出現則將 {nums[i]], i} 插入 map。

參考解法

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
unordered_map<int, int> m;
for (int i = 0; i < nums.size(); ++i)
{
if (m.count(target - nums[i])) return { m[target - nums[i]], i };
m[nums[i]] = i;
}
return {};
}
};