【Leetcode 每日一题】1399. 统计最大组的数目
问题背景
给你一个整数 n n n。请你先求出从 1 1 1 到 n n n 的每个整数 10 10 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。
请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。
数据约束
- 1 ≤ n ≤ 1 0 4 1 \le n \le 10 ^ 4 1≤n≤104
解题过程
简单的做法是按题目要求用哈希表统计结果,需要想清楚的是,每一组中的数字数目只会随着遍历过程增加,所以当最大数量发生变化时,重新累计就可以了。
具体实现
class Solution {public int countLargestGroup(int n) {int[] count = new int[String.valueOf(n).length() * 9 + 1];int max = 0;int res = 0;for (int i = 1; i <= n; i++) {int cur = calc(i);count[cur]++;if (count[cur] > max) {max = count[cur];res = 1;} else if (count[cur] == max) {res++;}}return res;}private int calc(int num) {int res = 0;while (num > 0) {res += num % 10;num /= 10;}return res;}
}