https://web.stanford.edu/class/cs9/lectures/04/Two-Sum.pdf
Store target - numbers[i] into map,
If numbers[i] found in the map, add into result (map[numbers[i]] + 1), (i+ 1). Not index, but the nth number.
class Solution {
public:
/*
* @param numbers: An array of Integer
* @param target: target = numbers[index1] + numbers[index2]
* @return: [index1 + 1, index2 + 1] (index1 < index2)
*/
vector<int> twoSum(vector<int> &numbers, int target) {
// write your code here
vector<int> result;
int size = numbers.size();
unordered_map<int, int> map;
for (int i = 0; i < size; i++) {
if (map.find(numbers[i]) == map.end()) {
map.insert({target - numbers[i], i});
} else {
result.push_back(map[numbers[i]] + 1);
result.push_back(i + 1);
return result;
}
}
}
};