1262. 可被三整除的最大和
题目描述
给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。
示例
示例1
输入:nums = [3,6,5,1,8]
输出:18
解释:选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和)。
示例2
输入:nums = [4]
输出:0
解释:4 不能被 3 整除,所以无法选出数字,返回 0。
题目分析1
一个直观的思路就是根据num[i]%3讲数字分成三组,list0(余数为0),list1(余数为1),list2(余数为2),然后求出数组的总和sum,那么:
- 当sum%3=1时,我们需要删除list1的最小值sum1,或者list2两个最小值,和为sum2,删除sum1、sum2中的最小值
- 当sum%3=2时,我们需要删除list2的最小值sum2,或者list1两个最小值,和为sum1,删除sum1、sum2中的最小值
java代码
public int maxSumDivThree(int[] nums) {
List<Integer> list = new ArrayList<>();
for(int i=0;i<nums.length;i++){
list.add(nums[i]);
}
list.sort(Integer::compareTo);
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
List<Integer> list0 = new ArrayList<>();
int sum = 0