LeetCode1262. 可被三整除的最大和

1262. Greatest Sum Divisible by Three

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];
    }
};

你可能感兴趣的:(leetcode)