-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathsolution.cpp
47 lines (46 loc) · 1.2 KB
/
solution.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
/**
* 211 / 211 test cases passed.
* Runtime: 132 ms
* Memory Usage: 10.3 MB
*/
class Solution {
public:
int countQuadruplets(vector<int>& nums) {
int n = nums.size(), ans = 0;
for (int a = 0; a < n - 3; ++ a) {
for (int b = a + 1; b < n - 2; ++ b) {
for (int c = b + 1; c < n - 1; ++ c) {
for (int d = c + 1; d < n; ++ d) {
if (nums[a] + nums[b] + nums[c] == nums[d]) {
++ ans;
}
}
}
}
}
return ans;
}
};
/**
* 211 / 211 test cases passed.
* Runtime: 12 ms
* Memory Usage: 11.9 MB
*/
class Solution2 {
public:
int countQuadruplets(vector<int>& nums) {
int n = nums.size(), ans = 0;
unordered_map<int, int> store;
for (int b = n - 3; b >= 1; -- b) {
for (int d = b + 2; d < n; ++ d) {
store[nums[d] - nums[b + 1]] ++;
}
for (int a = 0; a < b; ++ a) {
if (int sum = nums[a] + nums[b]; store.count(sum)) {
ans += store[sum];
}
}
}
return ans;
}
};