LeetCode1399. 统计最大组的数目

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

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

  2. 示例
    在这里插入图片描述

二. 方法一
  1. 解题思路

  2. 解题代码

    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
    
  3. 分析
    时间复杂度: O(n)
    空间复杂度: O(1) 40位的列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值