首页 > 其他 > 详细

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

时间:2020-04-07 01:04:10      阅读:78      评论:0      收藏:0      [点我收藏+]

题目

思路

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

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

原文:https://www.cnblogs.com/whisperbb/p/12650484.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!