-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtwoSum2.cpp
More file actions
33 lines (33 loc) · 1.19 KB
/
twoSum2.cpp
File metadata and controls
33 lines (33 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/** LeetCode NO.167
** Given an array of integers that is already sorted in ascending order,
** find two numbers such that they add up to a specific target number.
**
** The function twoSum should return indices of the two numbers such that they add up to the target,
** where index1 must be less than index2.
**
** Please note that your returned answers (both index1 and index2) are not zero-based.
** You may assume that each input would have exactly one solution and you may not use the same element twice.
**
** Input: numbers={2, 7, 11, 15}, target=9
** Output: index1=1, index2=2
**/
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> answer;
map<int, int> hash;
int remain;
for (int i = 0; i < nums.size(); i++) {
remain = target - nums[i];
if (hash.find(remain) != hash.end()) {
// +1 because both index1 and index2 are not zero-based.
answer.push_back(hash[remain]+1);
answer.push_back(i+1);
return answer;
} else {
hash.insert(make_pair(nums[i], i));
}
}
return answer;
}
};