统计数字 k 在 0 到 n 中的出现的次数

题目:

计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。

分析:

  • 首先想到使用组合数学的方法,分析n的每一个位上的数字,进行组合运算。分析可知,这种方法依赖于每一位上的数字,程序判断较复杂。
  • 使用从0到n的遍历,找到每一个数的每一位,进行比较。时间复杂度为 O ( n ) O(n) O(n)

代码

class 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我们可以将这道题分成两个子问题:首先,我们需要找到在给定范围 [m, n] 数字 n 出现的总次数;其次,我们需要将这个总次数拆分成各个位数上数字 n 出现次数。 对于第一个子问题,我们可以遍历 [m, n] 的每一个数字,计算其数字 n 出现次数,并累加到总次数。 对于第二个子问题,我们可以将数字 n 拆分成各个位数上的数字,然后分别统计每个位数上数字 n 出现次数。具体地,假设数字 n 有 k 位,我们可以使用一个数组 count 来记录在个位、十位、百位......上数字 n 出现次数,然后将其累加起来即可。 下面是代码实现: ```python def count_digit(n, d): """ 统计数字 n 数字 d 出现次数 """ count = 0 while n > 0: if n % 10 == d: count += 1 n //= 10 return count def count_range(m, n, d): """ 统计在范围 [m, n] 数字 d 出现次数 """ count = 0 for i in range(m, n+1): count += count_digit(i, d) return count def count_range_all_digits(m, n): """ 统计在范围 [m, n] 所有数字出现次数 """ count = [0] * 10 # 初始化 count 数组 for d in range(10): count[d] = count_range(m, n, d) return count ``` 其,`count_digit(n, d)` 函数用于统计数字 n 数字 d 出现次数;`count_range(m, n, d)` 函数用于统计在范围 [m, n] 数字 d 出现次数;`count_range_all_digits(m, n)` 函数用于统计在范围 [m, n] 所有数字出现次数,并返回一个包含 0~9 共 10 个数字在范围 [m, n] 出现次数的列表 count。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值