2025-11-23 Daily Challenge
Today I have done leetcode's November LeetCoding Challenge with cpp.
November LeetCoding Challenge 23
Description
Greatest Sum Divisible by Three
Given an integer array nums, return the maximum possible sum of elements of the array such that it is divisible by three.
Example 1:
Input: nums = [3,6,5,1,8] Output: 18 Explanation: Pick numbers 3, 6, 1 and 8 their sum is 18 (maximum sum divisible by 3).
Example 2:
Input: nums = [4] Output: 0 Explanation: Since 4 is not divisible by 3, do not pick any number.
Example 3:
Input: nums = [1,2,3,4,4] Output: 12 Explanation: Pick numbers 1, 3, 4 and 4 their sum is 12 (maximum sum divisible by 3).
Constraints:
1 <= nums.length <= 4 * 1041 <= nums[i] <= 104
Solution
class Solution {
public:
int maxSumDivThree(vector<int>& nums) {
int minOne = 0;
int minTwo = 0;
int sum = 0;
for(auto num : nums) {
if(num % 3 == 1) {
if(minOne) {
if(minTwo) minTwo = min(minTwo, minOne + num);
else minTwo = minOne + num;
minOne = min(minOne, num);
} else {
minOne = num;
}
} else if(num % 3 == 2) {
if(minTwo) {
if(minOne) minOne = min(minOne, minTwo + num);
else minOne = minTwo + num;
minTwo = min(minTwo, num);
} else {
minTwo = num;
}
}
sum += num;
}
if(sum % 3 == 1) return sum - minOne;
if(sum % 3 == 2) return sum - minTwo;
return sum;
}
};
// Accepted
// 43/43 cases passed (1 ms)
// Your runtime beats 89.48 % of cpp submissions
// Your memory usage beats 93.2 % of cpp submissions (28.8 MB)