文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
1. Description
2. Solution
解析:Version 1,是对Version 3的简化,具体参考Version 3。Version 2,先对数组求总和,然后根据每个数除3
的余数进行有序分组,当总和除3
余1
时,此时总和应该减去最小的余数为1
的数,或者减去最小的两个余数为2
的数,如果二者同时有,则取二者的最小值,余数为2
时同理。Version 3,dp
用来维护最大和除3
余数分别为0,1,2
的状态,初始时,当余数为0
时,不影响dp[0]
的值,不需要更新dp[1],dp[2]
,当余数为1,2
时,此时才需要开始更新dp[1],dp[2]
,然后根据余数的值不同,对各状态进行更新,pre
用来保存上一轮结束时的状态。
- Version 1
1 | class Solution: |
- Version 2
1 | class Solution: |
- Version 3
1 | class Solution: |