LeetCode 1399. Count Largest Group Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
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 104, so the sum of the digits also does not exceed 9 × 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 × log n), and the space complexity is O(log n), where n is the given number.

PythonJavaC++GoTypeScriptRust
class Solution: def countLargestGroup(self, n: int) -> int: cnt = Counter() ans = mx = 0 for i in range(1, n + 1): s = 0 while i: s += i % 10 i //= 10 cnt[s] += 1 if mx < cnt[s]: mx = cnt[s] ans = 1 elif mx == cnt[s]: ans += 1 return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !