1399. Count Largest Group
Description
You are given an integer n
.
We need to group the numbers from 1
to n
according to the sum of its digits. For example, the numbers 14 and 5 belong to the same group, whereas 13 and 3 belong to different groups.
Return the number of groups that have the largest size, i.e. the maximum number of elements.
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 1: Hash Table or Array
We note that the number does not exceed \(10^4\), so the sum of the digits also does not exceed \(9 \times 4 = 36\). Therefore, we can use a hash table or an array of length \(40\), denoted as \(cnt\), to count the number of each sum of digits, and use a variable \(mx\) to represent the maximum count of the sum of digits.
We enumerate each number in \([1,..n]\), calculate its sum of digits \(s\), then increment \(cnt[s]\) by \(1\). If \(mx < cnt[s]\), we update \(mx = cnt[s]\) and set \(ans\) to \(1\). If \(mx = cnt[s]\), we increment \(ans\) by \(1\).
Finally, we return \(ans\).
The time complexity is \(O(n \times \log n)\), and the space complexity is \(O(\log n)\), where \(n\) is the given number.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|