加载中...
1399-统计最大组的数目(Count Largest Group)
发表于:2021-12-03 | 分类: 简单
字数统计: 712 | 阅读时长: 3分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/count-largest-group

英文原文

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

 

Constraints:

  • 1 <= n <= 10^4

中文题目

给你一个整数 n 。请你先求出从 1 到 n 的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。

请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。

 

示例 1:

输入:n = 13
输出:4
解释:总共有 9 个组,将 1 到 13 按数位求和后这些组分别是:
[1,10],[2,11],[3,12],[4,13],[5],[6],[7],[8],[9]。总共有 4 个组拥有的数字并列最多。

示例 2:

输入:n = 2
输出:2
解释:总共有 2 个大小为 1 的组 [1],[2]。

示例 3:

输入:n = 15
输出:6

示例 4:

输入:n = 24
输出:5

 

提示:

  • 1 <= n <= 10^4

通过代码

高赞题解

解题思路

1 先思考如何将十进制的各个数位相加,因为求的是从1-n的数位和,所以可以找出规律:

sum[i] = sum[i / 10] + i % 10 //按顺序添加sum[i]

2 然后统计各数位和的个数(有多少个相同个数并列的组)

3 求出并列数目最多的组,也就是统计和中最大的那个数

4 最后计算与max相等的数有多少个就可以了。

一开始代码写的比较长,按照基本的思路写,例如计数那块用了HashMap,求数位和用了i % 10 和 i / 10的计算方法

后来慢慢优化,答案还可以优化成一个for循环求出答案,但是这样需要做的判断却增加了,不如分开两个for循环计算

代码

class Solution {
    public int countLargestGroup(int n) {

        int ans = 0, max = 1;
        int[] count = new int[n +  1];// 统计数位和有多少
        int[] sum = new int[n + 1]; //计算1-n各个元素的数位和,例如数字i的数位和是sum[i / 10] + i % 10
        
        for(int i = 1; i <= n; i++){
            sum[i] = sum[i / 10] + i % 10;
            count[sum[i]]++;
            if(count[sum[i]] > max) 
                max = count[sum[i]];
        }

        for(int num : count) ans += num == max ? 1 : 0;
        
        return ans;
    }
}

统计信息

通过次数 提交次数 AC比率
9854 14682 67.1%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
1383-最大的团队表现值(Maximum Performance of a Team)
下一篇:
1401-圆和矩形是否有重叠(Circle and Rectangle Overlapping)
本文目录
本文目录