g1301_1400.s1399_count_largest_group.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1301_1400.s1399_count_largest_group;
// #Easy #Hash_Table #Math #2022_03_17_Time_3_ms_(98.21%)_Space_40.9_MB_(60.71%)
/**
* 1399 - Count Largest Group\.
*
* Easy
*
* 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
**/
public 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;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy