求一个做健身餐的网站气象服务网站建设
求一个做健身餐的网站,气象服务网站建设,wordpress 固定链接 not found,软件开发工程师面试题题目链接
2719. 统计整数数目 - 力扣#xff08;LeetCode#xff09;
解题思路
题目实际上求的是[num1,...num2]中#xff0c;数位和在[min_sum,...max_sum]的数的个数。对于这种区间[l,...r]的问题#xff0c;我们可以考虑转化为求[1,...r]和[1,...l-1]的答案#xff…题目链接
2719. 统计整数数目 - 力扣LeetCode
解题思路
题目实际上求的是[num1,...num2]中数位和在[min_sum,...max_sum]的数的个数。对于这种区间[l,...r]的问题我们可以考虑转化为求[1,...r]和[1,...l-1]的答案然后相减对于[1,...r]的答案我们可以使用DP数位来求解。我们设计一个函数dfs(pos,s,limit)表示处理到第pos位数位和为s当前数是否有上界限制limit的方案数。其中pos从高到低枚举。对于dfs(pos,s,limit),我们可以枚举当前数位i的值然后递归计算dfs(posl,si,limit^(iup)),其中up表示当前数位的商界。如果limit为真那么up就是当前数位的上界否则up表示为9。如果pos大于等于num的长度那么我们就可以判断s是否在[min_sum,...max_sum]的范围内如果在就返回1否则返回0。
实话实说真看不懂。
解题代码
class Solution:def count(self, num1: str, num2: str, min_sum: int, max_sum: int) - int:def calc(high: str) - int:cachedef dfs(i: int, s: int, is_limit: bool) - int:if s max_sum: # 非法return 0if i len(high):return s min_sumres 0up int(high[i]) if is_limit else 9for d in range(up 1): # 枚举当前数位填 dres dfs(i 1, s d, is_limit and d up)return resreturn dfs(0, 0, True)is_num1_good min_sum sum(map(int, num1)) max_sumreturn (calc(num2) - calc(num1) is_num1_good) % 1_000_000_007
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89823.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!