-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1.cpp
More file actions
91 lines (78 loc) · 2.06 KB
/
1.cpp
File metadata and controls
91 lines (78 loc) · 2.06 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
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
1. Two Sum
https://leetcode.com/problems/two-sum/
Rank 4,349,964
Given an array of integers nums and an integer target, return indices of the two
numbers such that they add up to target. You may assume that each input would
have exactly one solution, and you may not use the same element twice. You can
return the answer in any order. Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6
Output: [0,1]
*/
#include <cstdio>
#include <vector>
#include <assert.h>
using namespace std;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> ret;
for (size_t i = 0; i < nums.size(); i++) {
int a = nums[i];
for (size_t j = 0; j < nums.size(); j++) {
if (j == i) {
continue;
}
int b = nums[j];
if (a + b == target) {
ret.push_back(i);
ret.push_back(j);
return ret;
}
}
}
return ret;
}
};
void show(vector<int> nums) {
static int count = 0;
for (size_t i = 0; i < nums.size(); i++) {
printf("%d. %d\n", count, nums[i]);
}
count++;
}
void test_case() {
Solution s;
vector<int> nums;
vector<int> ret;
nums.insert(nums.end(), {2, 7, 11, 5});
ret = s.twoSum(nums, 9);
assert(ret[0] == 0);
assert(ret[1] == 1);
nums.clear();ret.clear();
nums.insert(nums.end(), {3, 2, 4});
ret = s.twoSum(nums, 6);
assert(ret[0] == 1);
assert(ret[1] == 2);
nums.clear();ret.clear();
nums.insert(nums.end(), {3, 2, 3});
ret = s.twoSum(nums, 6);
assert(ret[0] == 0);
assert(ret[1] == 2);
nums.clear();ret.clear();
nums.insert(nums.end(), {3, 3});
ret = s.twoSum(nums, 6);
assert(ret[0] == 0);
assert(ret[1] == 1);
}
int main() {
test_case();
return 0;
}