@@ -4,37 +4,28 @@ public:
4
4
// Start typing your C/C++ solution below
5
5
// DO NOT write int main() function
6
6
vector<vector<int> > rets;
7
- int size = num.size();
8
- if (size < 4)
7
+ if (num.size() < 4)
9
8
return rets;
10
9
sort(num.begin(), num.end());
11
- for (int i = 0; i < size - 3; i++) {
12
- while ((i > 0) && (i < size - 3 ) && (num[i] == num[i-1]))
13
- i++ ;
14
- for (int j = i+ 1; j < size - 2; j++) {
15
- while ((j > i+1) && (j < size - 2 ) && (num[j] == num[j-1]))
16
- j++ ;
17
- int l = j + 1, u = size - 1, sum = 0 ;
10
+ for (size_t i = 0; i < num. size() - 3; i++) {
11
+ if ((i > 0) && (num[i] == num[i-1]))
12
+ continue ;
13
+ for (size_t j = i + 1; j < num. size() - 2; j++) {
14
+ if ((j > i + 1 ) && (num[j] == num[j-1]))
15
+ continue ;
16
+ size_t l = j + 1, u = num. size() - 1;
18
17
while (l < u) {
19
- sum = num[i] + num[j] + num[l] + num[u];
20
- if (sum > target) {
21
- u--;
22
- while ((l < u) && (num[u] == num[u+1]))
23
- u--;
24
- }
25
- else {
26
- if (sum == target) {
27
- vector<int> ret;
28
- rets.push_back(ret);
29
- rets.back().push_back(num[i]);
30
- rets.back().push_back(num[j]);
31
- rets.back().push_back(num[l]);
32
- rets.back().push_back(num[u]);
33
- }
34
- l++;
35
- while ((l < u) && (num[l] == num[l-1]))
36
- l++;
18
+ long long sum = (long long)num[i] + num[j] + num[l] + num[u];
19
+ if (sum == target) {
20
+ rets.push_back(vector<int> (4, num[i]));
21
+ rets.back()[1] = num[j];
22
+ rets.back()[2] = num[l];
23
+ rets.back()[3] = num[u];
37
24
}
25
+ if (sum < target)
26
+ while ((++l < u) && (num[l] == num[l-1]));
27
+ else
28
+ while ((--u > l) && (num[u] == num[u+1]));
38
29
}
39
30
}
40
31
}
0 commit comments