1399. Count Largest Group
SourceBiweekly Contest 23 Q1DifficultyEasyRating1341
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
Thinking
Group \(1..n\) by digit sum and count how many groups share the maximum size. \(n \le 10^4\), so digit sums are at most \(36\). Sum digits for each integer, tally group sizes, and track the current maximum size together with how many groups attain it.
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 | |