1399. Count Largest Group

Difficulty:
Related Topics:
Similar Questions:

    Problem

    You are given an integer n.

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

    Return the number of groups that 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.
    

      Constraints:

    Solution (Java)

    class Solution {
        public int countLargestGroup(int n) {
            int largest = 0;
            int[] map = new int[37];
            int sumOfDigit = 0;
            for (int i = 1; i <= n; i++) {
                if (i % 10 == 0) {
                    // reset and start a new sum
                    sumOfDigit = getSumOfDigits(i);
                } else {
                    sumOfDigit++;
                }
                int val = ++map[sumOfDigit];
                largest = val > largest ? val : largest;
            }
            return countLargestGroup(largest, map);
        }
    
        private int countLargestGroup(int largest, int[] arr) {
            int count = 0;
            for (int val : arr) {
                if (val == largest) {
                    count++;
                }
            }
            return count;
        }
    
        private int getSumOfDigits(int num) {
            int sum = 0;
            while (num > 0) {
                sum += num % 10;
                num /= 10;
            }
            return sum;
        }
    }
    

    Explain:

    nope.

    Complexity: