新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/3 21:07:54来源:尧图网络
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

相关资讯

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

较早相关资讯

最新相关资讯

MATLAB实现DWT-DCT-SVD图像水印:嵌入提取与鲁棒性测试 2026/9/3 21:06:33

MATLAB实现DWT-DCT-SVD图像水印:嵌入提取与鲁棒性测试

这次我们来看一个 MATLAB 水印项目。它做的不是最基础的 DWT-SVD,而是在 DWT-SVD 的基础上再叠加 DCT,组合成一套 DWT-DCT-SVD 水印算法,同时覆盖水印嵌入和水印提取。简单说,这类项目在毕业设计、图像版权保护仿真、科研复现里非…

阅读更多 →
2026央企穿透式监管风险洞察能力建设白皮书【附全文阅读】 2026/9/3 21:06:33

2026央企穿透式监管风险洞察能力建设白皮书【附全文阅读】

本白皮书面向央国企风控、审计、内控、数字化建设负责人及咨询从业者,围绕央企穿透式监管风险洞察能力建设展开研究。 结合国资监管政策,剖析 DRP 落地后风险判断层缺失、内外证据不校验、模型仅靠简单规则等现实痛点,提出在现有数据底座上搭建风险洞察增强能力层。构建数据…

阅读更多 →
校志愿服务全流程数字化管理平台设计与实现:从状态机到系统闭环 2026/9/3 21:06:33

校志愿服务全流程数字化管理平台设计与实现:从状态机到系统闭环

做毕业设计项目时,最怕的不是代码写不出来,而是答辩时经不起追问。“你这个报名状态是怎么流转的?”“如果活动名额已经满了,志愿者还能报名吗?”“签到了但没人给他认定工时,数据会卡在哪一步?…

阅读更多 →
Muse Spark 1.2 新版本实战:配置、调优与批量生成全解析 2026/9/3 21:06:33

Muse Spark 1.2 新版本实战:配置、调优与批量生成全解析

最近 Muse Spark 的周榜热度确实不小,社区里不少人在讨论“muse spark 1.2”新版本带来的变化,以及它冲到周榜前三这件事。作为一个长期在 AI 创作工具和自动化工作流里折腾的开发者,我也在第一时间做了升级,并把实际使用过程中的…

阅读更多 →
基于DWT-DCT-SVD的数字图像水印算法与MATLAB实现 2026/9/3 21:06:33

基于DWT-DCT-SVD的数字图像水印算法与MATLAB实现

DWT-DCT-SVD水印算法是数字图像水印里很经典的一种组合思路。它把离散小波变换、离散余弦变换和奇异值分解串在一起,用来解决单一变换域水印鲁棒性不够的问题。在MATLAB里实现这个流程,核心不是调用函数,而是理解每一步为什么要做、参数怎么选…

阅读更多 →
2026年普通人学大模型的聪明路线:先用→再拆→最后造 2026/9/3 21:03:28

2026年普通人学大模型的聪明路线:先用→再拆→最后造

本文提出了一条与传统程序员路线不同的AI学习路径,主张普通人应先用AI工具解决实际问题,建立直观感受,再逐步拆解理解其工作原理,最后才学习编程创造自己的AI应用。文章详细阐述了“先用、再拆、最后造”三个阶段的学习重点和方法…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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