【动态规划】leetcode-1262.可被3整除的最大和

题目:

给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。
【动态规划】leetcode-1262.可被3整除的最大和_第1张图片
思路:
参考大佬:https://leetcode-cn.com/problems/greatest-sum-divisible-by-three/solution/20xing-dai-ma-qing-song-shuang-bai-yi-ka-hc1k/
秒啊!!!

解答:

class Solution:
    def maxSumDivThree(self, nums: List[int]) -> int:
        n=len(nums)
        #dp[j]:余数为j的最大和,j取0,1,2
        dp=[0]*3
        for i in range(n):
            #a记录nums[:i+1]中余数为0的最大和 累计当前数之后的和
            a=dp[0]+nums[i]
            b=dp[1]+nums[i]
            c=dp[2]+nums[i]
            dp[a%3]=max(dp[a%3],a)
            dp[b%3]=max(dp[b%3],b)
            dp[c%3]=max(dp[c%3],c)
            print(a,b,c,dp)
        return dp[0]

你可能感兴趣的:(leetcode,Python)