/
twosum_sorted.cpp
78 lines (61 loc) · 1.46 KB
/
twosum_sorted.cpp
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <vector>
#include <algorithm>
void print_vector(std::vector<int> const &v)
{
std::cout << "[";
for (auto it = v.begin(); it != v.end(); it++) {
if (it != v.begin())
std::cout << ", ";
std::cout << *it;
}
std::cout << "]";
}
void print_vector2(std::vector<std::vector<int>> const &v)
{
std::cout << "[";
for (auto it = v.begin(); it != v.end(); it++) {
if (it != v.begin())
std::cout << ", ";
print_vector(*it);
}
std::cout << "]";
}
int compare(const void *a, const void *b)
{
return (*((int *)a) - *((int *)b));
}
void vector_qsort(std::vector<int> &v)
{
qsort(&v[0], v.size(), sizeof(int), compare);
}
class Solution {
public:
std::vector<int>
twoSum(std::vector<int>& nums, int target) {
int i,j;
int size = nums.size();
i = 0;
j = size - 1;
while (i < j) {
int sum = nums[i] + nums[j];
if (sum == target) {
return {i + 1, j + 1};
} else if (sum > target) {
j--;
} else { /* sum < target */
i++;
}
}
return {};
}
};
int main() {
Solution s;
std::vector<int> nums = {2, 7, 11, 15};
int target = 9;
std::vector<int> results = s.twoSum(nums, target);
print_vector(results);
std::cout << std::endl;
return 0;
}