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];
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章