一. 题目
-
题目
给你一个整数 n 。请你先求出从 1 到 n 的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。
-
示例
二. 方法一
-
解题思路
-
解题代码
def countLargestGroup(self, n: int) -> int: # 因为n的取值范围小于10000, 所以位数之和最大是36 # 创建一个40位的列表, 足够统计每一种的情况 arr = [0 for _ in range(40)] # 存储列表中存储的最大值 max_size = 0 # 统计最大值的数量 size = 0 for ele in range(1, n + 1): # 用于统计每一个元素的位数和 count = 0 while ele > 0: count += ele % 10 ele = ele // 10 arr[count] += 1 for ele in arr: if ele == max_size: size += 1 elif ele > max_size: max_size = ele size = 1 return size
-
分析
时间复杂度: O(n)
空间复杂度: O(1) 40位的列表