当前位置: 首页 > news >正文

DeepSeek LeetCode 3803. 统计残差前缀 Python3实现

您给出的 totalNumbers(self, digits: List[int]) -> int 方法签名,对应的是 LeetCode 第 3483 题「不同三位偶数的数目」,而不是第 3803 题。这一题要求统计用给定数字能组成多少个不同的三位偶数。

这里提供两种典型的 Python3 解法,您可以根据数据规模和个人偏好选择。

解法一:暴力枚举 + 去重(最直观)

因为 digits 的长度最多只有 10,直接枚举所有可能的三位数组合,然后利用集合去重即可。

```python
from typing import List

class Solution:
def totalNumbers(self, digits: List[int]) -> int:
n = len(digits)
seen = set()

# 枚举百位 i,十位 j,个位 k
for i in range(n):
# 百位不能为0
if digits[i] == 0:
continue
for j in range(n):
if j == i:
continue
for k in range(n):
if k == i or k == j:
continue
# 个位必须是偶数
if digits[k] % 2 != 0:
continue
# 组成数字并加入集合去重
num = digits[i] * 100 + digits[j] * 10 + digits[k]
seen.add(num)

return len(seen)
```

解法二:基于频数表的计数(更高效)

不枚举位置,而是统计每个数字出现的次数,然后枚举合法的百位、十位和个位数字,这样能更直接地处理重复数字的情况。

```python
from typing import List
from collections import Counter

class Solution:
def totalNumbers(self, digits: List[int]) -> int:
# 统计每个数字的出现次数
cnt = Counter(digits)
ans = 0

# 枚举可能的百位数字 (1-9)
for i in range(1, 10):
if cnt[i] == 0:
continue
cnt[i] -= 1 # 使用一个 i

# 枚举可能的十位数字 (0-9)
for j in range(0, 10):
if cnt[j] == 0:
continue
cnt[j] -= 1 # 使用一个 j

# 枚举可能的个位数字 (必须是偶数)
for k in range(0, 10, 2):
if cnt[k] > 0:
ans += 1

cnt[j] += 1 # 恢复十位数字

cnt[i] += 1 # 恢复百位数字

return ans
```

复杂度分析:

· 解法一:时间复杂度 O(n³),空间复杂度 O(m),其中 m 是生成的不同数字个数。
· 解法二:时间复杂度 O(10 * 10 * 5) 即 O(1),空间复杂度 O(1)。

---

补充说明:如果您确实想问的是 LeetCode 3803 题「统计残差前缀」,其方法签名应为 def residuePrefixes(self, s: str) -> int,实现方式是使用集合维护不同字符数量。

http://www.jsqmd.com/news/1332390/

相关文章:

  • C语言实现网络爬虫:从Socket到libcurl的底层HTTP协议实践
  • Docker容器启动命令最佳实践:MySQL、Redis、Nginx配置详解与避坑指南
  • 2026年消费电子气密性检测设备行业趋势解读 - 汇聚至此
  • UE4 Cascade粒子系统核心原理与性能优化实战指南
  • 计算机学习笔记 ArrayList和HashMap的具体用法和代码示例
  • Unity WebGL本地运行报错?一文详解跨域问题与部署方案
  • 宁波老板注意,企业财税合规服务怎么选才不会踩坑? - 甄选测评馆
  • UE4蓝图空间变换核心:Get/Set Actor Location深度解析与实战应用
  • Kimi LeetCode 3803. 统计残差前缀 Java实现
  • TiDB分布式数据库从零部署实战:架构解析与生产级配置指南
  • Unity摄像机视角精准对齐:超越基础菜单的三种进阶方法
  • AV号转BV号算法逆向解析:异或混淆与58进制编码实战
  • HoRain云--Pi Agent 非交互模式
  • 基于Godot与LLM构建智能桌宠:架构设计与工程实践
  • Win11与Ubuntu双系统安装全攻略:从分区到引导的完整避坑指南
  • 3个实用功能彻底解决Zotero中文文献管理难题:茉莉花插件完整指南
  • 市场上各类抛丸机销售厂家盘点 教你快速选出靠谱合作商家 - 甄选测评馆
  • Unity背包系统开发:基于UGUI的智能拖拽与数据交换实现
  • 从Java后端到AI应用开发:33岁转型经验分享,收藏这3类人慎重转型!
  • GULP:宇宙的演化---第3章相对性原理
  • ESXi安装CentOS 7.9全流程指南:从虚拟机创建到性能调优
  • FGO自动化脚本终极指南:如何用Python解放双手,轻松刷本
  • MySQL按月累计统计实战:从自连接到窗口函数的性能演进
  • FPGA逻辑单元构建高效乘法器:原理、优化与实战指南
  • 机器视觉理论一
  • 如何快速获取QQ空间历史数据:GetQzonehistory完整指南
  • 电商与短视频运营培训报名咨询——武汉新华电脑学校老师联系方式 - 武汉中职最新信息发布
  • 免费实现PDF双语对照翻译:Python自动化方案与排版保持技巧
  • ContextMenuManager:重新定义Windows右键菜单的智能管理体验
  • 洛谷P5658 [CSP-S 2019] 括号树一题的题解