less than 1 minute read

<-E 1399> Count Largest Group

// Method 1
class Solution {
public:
    int findDigitsSum(int x){
        int sum = 0;
        while(x != 0){
            sum += (x % 10);
            x /= 10;
        }
        return sum;
    }
    int countLargestGroup(int n) {
        unordered_map<int, int> umap;
        int maxi = 0;
        for(int i = 1; i <= n; i++){
            int sum = findDigitsSum(i);
            umap[sum]++;
            if(umap[sum] >= maxi)
             maxi = umap[sum];
        }
        int rep = 0;
        for (auto x : umap) 
            if(x.second==maxi)
                rep++;
        return rep;
    }
};


class Solution {
public:
    int countLargestGroup(int n) {
        vector<int> c(100);
        vector<int> dp(10000,0);
        int m = 0;
        for(int i = 1; i <= n; i++){
            dp[i] = i % 10 + dp[i/10];
            m = max(m, ++c[dp[i]]);
        }
        int ret = 0;
        for(int i = 1; i < c.size(); i++){
            if(c[i] == m){
                ret++;
            }
        }
        return ret;
    }
};