すべての出会いが美しいとは限らない。すべての別れが悲しいとは言えない。

0%

【算法】Two Sum 问题

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

Example:
Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> record;
int size = nums.size();
for (auto i = 0; i < size; ++i) {
auto item = record.find(target - nums[i]);
if (item != record.end()) {
return {item->second, i};
}

record[nums[i]] = i;
}
return {};
}
};