Given an integer n
. Each number from 1
to n
is grouped according to the sum of its digits.
Return how many groups 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.
Example 3:
Input: n = 15 Output: 6
Example 4:
Input: n = 24 Output: 5
class Solution {
public int countLargestGroup(int n) {
int result = 0;
int max = 0;
Map<Integer,Integer> freqMap = new HashMap<Integer,Integer>();
for(int i=n;i>0;i--){
int sum = getSum(i);
freqMap.put(sum,freqMap.getOrDefault(sum,0)+1);
}
//System.out.println(freqMap);
List<Integer> valueList = new ArrayList<Integer>(freqMap.values());
for(int i=0;i<valueList.size();i++){
if(i==0){
max = valueList.get(i);
result = 1;
}
else{
if(valueList.get(i)>max){
max = valueList.get(i);
result=1;
}
else if(valueList.get(i)==max) result++;
}
}
return result;
}
public int getSum(int n){
int sum = 0;
while(n>0){
sum = sum + n%10;
n = n/10;
}
return sum;
}
}