question
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, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
code
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
class Solution{
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> map2find;
for(int i = 0; i < nums.size(); i++)
{
int num2find = target - nums[i];
if(map2find.count(num2find) > 0)
{
return {map2find[num2find], i};
}
map2find[nums[i]] = i;
}
}
};
int main()
{
vector<int> vecNums = {7, 5, 1, 3, 9, 8, 10};
Solution su;
vector<int> vecRes = su.twoSum(vecNums, 13);
cout << vecRes[0] << ", " << vecRes[1] << endl;
return 0;
}
compile
g++ -std=c++0x xxx.cpp