Greatest Sum Divisible by Three LeetCode solution in C++

1
class Solution {
2
public:
3
int maxSumDivThree(vector<int> &nums) {
4
vector<int> twos = {(int)1e4 + 1, (int)1e4 + 1}, ones = {(int)1e4 + 1, (int)1e4 + 1};
5
int res = 0;
6
for (int i : nums) {
7
if (i % 3 == 2) {
8
if (i <= twos[0]) {
9
twos[1] = twos[0], twos[0] = i;
10
} else if (i < twos[1])
11
twos[1] = i;
12
} else if (i % 3 == 1) {
13
if (i <= ones[0]) {
14
ones[1] = ones[0], ones[0] = i;
15
} else if (i < ones[1])
16
ones[1] = i;
17
}
18
res += i;
19
}
20
if (res % 3 == 2)
21
return max(res - twos[0], res - ones[0] - ones[1]);
22
else if (res % 3 == 1)
23
return max(res - ones[0], res - twos[0] - twos[1]);
24
return res;
25
}
26
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0