【LeetCode】1363. 形成三的最大倍数

题目

思路

将所有数字分类,然后计算总值,当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();
    }
}

猜你喜欢

转载自www.cnblogs.com/whisperbb/p/12650484.html
今日推荐