新闻详情

新闻详情

首页 / 资讯中心 / 详情

Kimi LeetCode 3336. 最大公约数相等的子序列数量 Python3实现

发布时间:2026/9/16 16:38:38来源:尧图网络
Kimi    LeetCode 3336. 最大公约数相等的子序列数量 Python3实现
这是 LeetCode 3336. 最大公约数相等的子序列数量 的 Python3 实现。---题目概述给定整数数组 nums求满足以下条件的非空子序列对 (seq1, seq2) 的数量- seq1 和 seq2 不相交没有共同下标- gcd(seq1) gcd(seq2)结果对 10^9 7 取模。---解题思路三维动态规划压缩为字典定义 dp[(g1, g2)] 为处理完部分元素后seq1 的 GCD 为 g1、seq2 的 GCD 为 g2 的方案数。其中 g10 或 g20 表示对应子序列为空。对于每个元素 num有三种选择1. 放入 seq1g1 更新为 gcd(g1, num)若 g10 则变为 num2. 放入 seq2g2 更新为 gcd(g2, num)若 g20 则变为 num3. 不放入任何子序列状态不变最终答案为所有 g1 g2 ! 0 的状态之和。 由于 nums[i] ≤ 200GCD 的可能取值有限使用 defaultdict 可以有效压缩状态空间避免遍历大量无效状态。---Python3 代码pythonfrom math import gcdfrom collections import defaultdictfrom typing import ListMOD 10 ** 9 7class Solution:def subsequencePairCount(self, nums: List[int]) - int:动态规划dp[(g1, g2)] 表示已处理元素中seq1的gcd为g1seq2的gcd为g2的方案数。g10 或 g20 表示对应子序列为空。对于每个num有三种选择1. 放入seq1更新g1 gcd(g1, num)若g10则变为num2. 放入seq2更新g2 gcd(g2, num)若g20则变为num3. 不放入任何子序列状态不变最终答案为所有 g1 g2 ! 0 的状态之和。dp defaultdict(int)dp[(0, 0)] 1 # 初始状态两个子序列都为空for num in nums:# 遍历当前所有状态避免迭代时修改字典items list(dp.items())for (g1, g2), cnt in items:# 选择1num放入seq1ng1 num if g1 0 else gcd(g1, num)dp[(ng1, g2)] (dp[(ng1, g2)] cnt) % MOD# 选择2num放入seq2ng2 num if g2 0 else gcd(g2, num)dp[(g1, ng2)] (dp[(g1, ng2)] cnt) % MOD# 选择3num不放入任何子序列状态已保留无需操作ans 0for (g1, g2), cnt in dp.items():if g1 ! 0 and g1 g2:ans (ans cnt) % MODreturn ans---复杂度分析项目 复杂度 说明时间 O(N \cdot S) N \leq 200 为数组长度S 为状态数实际运行中由于 GCD 取值有限状态数远小于理论上限空间 O(S) 使用 defaultdict 存储有效状态已通过全部示例验证- nums [1,2,3,4] → 10- nums [10,20,30] → 2- nums [1,1,1,1] → 50
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Gaussian软件在自由基反应计算中的关键技术与实践 2026/9/16 16:37:23

Gaussian软件在自由基反应计算中的关键技术与实践

1. 自由基反应计算的核心挑战自由基反应在有机化学、大气化学和生物体系中无处不在,但精确计算这类开壳层体系一直是理论化学的难点。传统方法处理自由基时常遇到三个典型问题:自旋污染导致波函数失真、电子相关能计算不充分、以及势能面交叉点的定位困难…

阅读更多 →
光纤FP干涉仪COMSOL建模与优化实践 2026/9/16 16:37:23

光纤FP干涉仪COMSOL建模与优化实践

1. 光纤FP干涉仪基础与COMSOL建模价值光纤FP干涉仪作为高精度光学测量的核心器件,其原理源于多光束干涉效应。在实际工程应用中,我们需要精确控制干涉条纹的间距和对比度来满足不同场景的测量需求。传统实验室调试方法耗时耗力,而COMSOL Mult…

阅读更多 →
Matlab实战技巧:从基础到进阶的38个高效方法 2026/9/16 16:37:23

Matlab实战技巧:从基础到进阶的38个高效方法

1. Matlab学习记录38:从基础到进阶的实战技巧作为一名长期使用Matlab进行工程计算和算法开发的工程师,我经常遇到各种实际问题需要解决。这篇学习记录将分享我在Matlab使用过程中积累的38个实用技巧,涵盖安装配置、绘图优化、算法实现、性能调…

阅读更多 →
POI 光标迭代添加段落,把 Codex 的模型通道改到 TaoToken 后再查 XmlCursor 2026/9/16 16:37:23

POI 光标迭代添加段落,把 Codex 的模型通道改到 TaoToken 后再查 XmlCursor

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenProject 15.4.2 补丁版本解析:自动调度、PDF 导出与优先级管理的修复全景 2026/9/16 16:37:23

OpenProject 15.4.2 补丁版本解析:自动调度、PDF 导出与优先级管理的修复全景

OpenProject 15.4.2 补丁版本解析:自动调度、PDF 导出与优先级管理的修复全景 【免费下载链接】openproject OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative wi…

阅读更多 →
51单片机+HC-05蓝牙控制继电器的信号链闭环调试指南 2026/9/16 16:34:22

51单片机+HC-05蓝牙控制继电器的信号链闭环调试指南

简介:本资源是一套完整的51单片机蓝牙远程控制继电器硬件项目实践包,面向嵌入式初学者、电子设计爱好者及课程设计学生,解决单片机外设驱动、蓝牙通信协议对接与继电器开关控制等典型应用场景问题。压缩包共83个文件,涵盖C语言源程…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞