题目
思路
将所有数字分类,然后计算总值,当sum除以3余1,删除掉一个一或两个2,当sum除以3余2,删除掉一个二或两个1
代码
class Solution {
int[] cnt = new int[10];
int sum = 0;
StringBuilder sb = new StringBuilder();
public boolean del(int num){
for(int i = num; i <= 9; i += 3){
if(cnt[i] != 0){
cnt[i]--;
return true;
}
}
return false;
}
public String largestMultipleOfThree(int[] digits) {
for(int item : digits){
cnt[item]++;
sum += item;
}
if(sum % 3 == 1){
if(!del(1)){
del(2);
del(2);
}
}
if(sum % 3 == 2){
if(!del(2)){
del(1);
del(1);
}
}
for(int i = 9; i >= 0; i--){
while((cnt[i]--) != 0){
sb.append(i);
}
}
if(sb.length() != 0 && sb.charAt(0) == '0') return "0";
return sb.toString();
}
}