Skip to content

1399. Count Largest Group

Description

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:

  • 1 <= n <= 104

 

Solutions

Solution: Hash Map

  • Time complexity: O(nlogn)
  • Space complexity: O(n)

 

JavaScript

js
/**
 * @param {number} n
 * @return {number}
 */
const countLargestGroup = function (n) {
  const sumMap = new Map();
  let largestSize = 0;
  let result = 0;

  const getDigitsSum = num => {
    let result = 0;

    while (num) {
      result += num % 10;
      num = Math.floor(num / 10);
    }

    return result;
  };

  for (let num = 1; num <= n; num++) {
    const sum = getDigitsSum(num);
    const size = sumMap.get(sum) ?? 0;

    sumMap.set(sum, size + 1);
    largestSize = Math.max(size + 1, largestSize);
  }

  for (const size of sumMap.values()) {
    if (size === largestSize) result += 1;
  }

  return result;
};

Released under the MIT license