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