Sat. Dec 21st, 2024

Given an integer n. Each number from 1 to n is grouped according to the sum of its digits. 

Return how many groups have the largest size.

Example 1:

Input: n = 13
Output: 4
Explanation: There are 9 groups in total, they are grouped according sum of its digits of numbers from 1 to 13:
[1,10], [2,11], [3,12], [4,13], [5], [6], [7], [8], [9]. There are 4 groups with largest size.

Example 2:

Input: n = 2
Output: 2
Explanation: There are 2 groups [1], [2] of size 1.

Example 3:

Input: n = 15
Output: 6

Example 4:

Input: n = 24
Output: 5
class Solution {
    public int countLargestGroup(int n) {
        int result = 0;
        int max = 0;
        Map<Integer,Integer> freqMap = new HashMap<Integer,Integer>();
        for(int i=n;i>0;i--){
            int sum = getSum(i);
            freqMap.put(sum,freqMap.getOrDefault(sum,0)+1);
        }
        //System.out.println(freqMap);
        List<Integer> valueList = new ArrayList<Integer>(freqMap.values());
        for(int i=0;i<valueList.size();i++){
            if(i==0){
                max = valueList.get(i);
                result = 1;
            } 
            else{
                if(valueList.get(i)>max){
                    max = valueList.get(i);
                    result=1;
                }
                else if(valueList.get(i)==max) result++;
                
            }
        }
        return result;
    }
    
    public int getSum(int n){
        int sum = 0;
        while(n>0){
            sum = sum + n%10;
            n = n/10;
        }
        return sum;
    }
}