Kimi    LeetCode 3791. 给定范围内平衡整数的数目 Python3实现
以下是 LeetCode 3791. 给定范围内平衡整数的数目 的 Python3 实现。题目理解一个整数是平衡的当且仅当1. 至少包含两位数字2. 奇数位数字之和等于偶数位数字之和最左边数字位置为1约束1 low high 10^15需要使用数位 DP。Python3 实现pythonfrom functools import lru_cacheclass Solution:def countBalanced(self, low: int, high: int) - int:# 如果 high 11范围内没有至少两位的数直接返回0if high 11:return 0# 计算 [0, x] 中平衡整数的个数def calc(x: int) - int:s str(x)n len(s)lru_cache(maxsizeNone)def dfs(pos: int, diff: int, is_limit: bool, is_num: bool) - int:# pos: 当前处理到的位置# diff: 奇数位和 - 偶数位和# is_limit: 是否受上界限制# is_num: 是否已经填了非前导零的数字if pos n:# 必须至少两位且差值为0return 1 if is_num and diff 0 else 0res 0up int(s[pos]) if is_limit else 9for d in range(up 1):if not is_num and d 0:# 前导零继续跳过res dfs(pos 1, diff, False, False)else:# 计算当前位的贡献# pos 从0开始对应第1位奇数位if is_num:# 已经有数字了当前位根据 pos 的奇偶性# pos 是字符串索引已经填了前导零后的实际位置需要重新算# 这里用 digit_count 记录已经填了多少位pass # 下面用另一种更清晰的方式return res# 上面的写法不太对换一种更清晰的pass# 重新写不用 is_num直接处理def count(x: int) - int:s str(x)n len(s)lru_cache(maxsizeNone)def dfs(pos: int, diff: int, is_limit: bool, started: bool, digit_count: int) - int:if pos n:# 必须已经开始至少一位且至少两位且差值为0return 1 if started and digit_count 2 and diff 0 else 0res 0up int(s[pos]) if is_limit else 9for d in range(up 1):if not started and d 0:# 还是前导零res dfs(pos 1, diff, False, False, 0)else:# 当前是第 digit_count1 位从1开始计数new_count digit_count 1# 奇数位加偶数位减new_diff diff d if new_count % 2 1 else diff - dres dfs(pos 1, new_diff, is_limit and d up, True, new_count)return resreturn dfs(0, 0, True, False, 0)return count(high) - count(low - 1)更简洁的版本不带前导零处理因为题目要求至少两位pythonfrom functools import lru_cacheclass Solution:def countBalanced(self, low: int, high: int) - int:def count(x: int) - int:if x 11:return 0s str(x)n len(s)lru_cache(maxsizeNone)def dfs(pos: int, diff: int, is_limit: bool) - int:# pos: 当前处理到的位置 (0-indexed)# diff: 奇数位和 - 偶数位和# is_limit: 是否受上界限制if pos n:return 1 if diff 0 else 0res 0up int(s[pos]) if is_limit else 9for d in range(up 1):# pos 从0开始对应第1位奇数位# 奇数位pos%20即第1,3,5...位加 d# 偶数位pos%21即第2,4,6...位减 dnew_diff diff d if pos % 2 0 else diff - dres dfs(pos 1, new_diff, is_limit and d up)return resreturn dfs(0, 0, True)return count(high) - count(low - 1)复杂度分析- 时间复杂度O(log M × D²)其中 M highD 10- 空间复杂度O(log M × D)主要是 lru_cache 的缓存空间关键要点1. 数位奇偶性pos % 2 0 对应第1、3、5...位奇数位从1开始计数加 d否则减 d2. 差值 diffdiff 奇数位和 - 偶数位和最终需要 diff 03. 范围计算count(high) - count(low - 1) 得到 [low, high] 范围内的平衡整数个数4. 边界处理x 11 时返回0因为单个数字不可能平衡

相关新闻

2FAuth安全架构深度解析:从数据加密到RFC合规的实战指南

2FAuth安全架构深度解析:从数据加密到RFC合规的实战指南

1. 项目概述:为什么我们需要重新审视2FAuth的安全性?最近在部署和审计内部的双因素认证系统时,我花了大量时间深入研究一个开源项目:2FAuth。它不仅仅是一个简单的TOTP令牌生成器,其设计背后蕴含了许多对安全性和合规性…

2026/11/5 16:26:53 阅读更多 →
国产SPI Flash在Linux系统下的驱动适配与移植实战

国产SPI Flash在Linux系统下的驱动适配与移植实战

1. 项目概述:当国产平台遇上国产Flash最近在基于复旦微电子的FMQL系列平台(可以理解为国产化的ZYNQ)进行Linux系统开发时,遇到了一个挺典型但又有点棘手的问题:系统引导程序U-Boot和Linux内核无法正确识别板载的国产SP…

2026/11/11 16:32:24 阅读更多 →
GoF设计模式——建造者模式

GoF设计模式——建造者模式

h5打开以查看 为什么需要建造者模式? 在 GoF设计模式——抽象工厂模式 中,抽象工厂解决了"一族产品要风格统一"的问题——一个工厂负责一整套产品,选了工厂就等于选了整套风格。 但不管是工厂方法还是抽象工厂,都只管"产出什么",不管"怎么一步…

2026/11/9 5:30:45 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻