文章作者: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:  |