Given an array nums
of integers, we need to find 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 * 10^4
1 <= nums[i] <= 10^4
题目:给你一个整数数组 nums
,请你找出并返回能被三整除的元素最大和。
思路:参考Link。数组res[i]
表示对3取余值为i
的最大和。
工程代码下载
class Solution {
public:
int maxSumDivThree(vector<int>& nums) {
vector<int> res(3, 0);
for(auto num : nums){
vector<int> cur = res;
for(auto i : cur){
res[(i+num)%3] = max(res[(i+num)%3], num+i);
}
}
return res[0];
}
};