1363. Largest Multiple of Three

就是数学题,为了保证余数为0, 要求剩下的数字尽量多,剩下的数字尽量小。

bool cmp(const int& a, const int& b){
    if (a>b){
        return true;
    }
    else{
        return false;
    }
}

class Solution {
public:
    
    
    string concat(vector& cnt){
        if (cnt[0]+cnt[1]+cnt[2]+cnt[3]+cnt[4]+cnt[5]+cnt[6]+cnt[7]+cnt[8]+cnt[9]==0){
            return "";
        }
        else if (cnt[1]+cnt[2]+cnt[3]+cnt[4]+cnt[5]+cnt[6]+cnt[7]+cnt[8]+cnt[9]==0){ // has only 0
            return "0";
        }
        else{
            string res = "";
            for(int i=9;i>=0;i--){
                char ch = i + '0';
                for(int j=0;j return;
    
    
    string largestMultipleOfThree(vector& digits) {
        
        // gain all number
        int sum = 0;
        vector cnt(10, 0);
        for(int i=0;i c[1]存在吗?c[4] c[7]存在,就删除一个就行
    //               => 不存在,(删除一位是不够的,需要删两个c[2,2] c[2,5] c[2,8] c[5,5] c[5,8] c[8,8])
    // 
        
        else if (sum%3==1){ // has value num!=3k, [1,4,7,2,5,8], 
            if (cnt[1]>=1){cnt[1]--;}
            else if (cnt[4]>=1){cnt[4]--;}
            else if (cnt[7]>=1){cnt[7]--;} 
            //= > has [2,5,8], sum%3==1, therefore, must has at least 2 val;
            else if (cnt[2]>=2){cnt[2] -= 2;}
            else if (cnt[2]>=1&&cnt[5]>=1){cnt[2]--; cnt[5]--;}
            else if (cnt[2]>=1&&cnt[8]>=1){cnt[2]--; cnt[8]--;}
            else if (cnt[5]>=2){cnt[5] -= 2;}
            else if (cnt[5]>=1&&cnt[8]>=1){cnt[5]--;cnt[8]--;}
            else if (cnt[8]>=2){cnt[8] -= 2;}
            else {cout<<"error"< c[2]存在吗?c[5] c[8]存在,就删除一个就行
    //               => 不存在,(删除一位是不够的,需要删两个c[1,1] c[1,4] c[1,7] c[4,4] c[4,7] c[7,7])               =>删除三个呢?不可能
        else if (sum%3==2){
            if (cnt[2]>=1){cnt[2]--;}
            else if (cnt[5]>=1){cnt[5]--;}
            else if (cnt[8]>=1){cnt[8]--;}
            else if (cnt[1]>=2){cnt[1] -= 2;}
            else if (cnt[1]>=1&&cnt[4]>=1){cnt[1]--; cnt[4]--;}
            else if (cnt[1]>=1&&cnt[7]>=1){cnt[1]--; cnt[7]--;}
            else if (cnt[4]>=2){cnt[4] -= 2;}
            else if (cnt[4]>=1&&cnt[7]>=1){cnt[4]--;cnt[7]--;}
            else if (cnt[7]>=2){cnt[7] -= 2;}
            else {cout<<"error"<

你可能感兴趣的:(leetcode,leetcode)