news 2026/10/6 5:13:36

leetcode 困难题 940. Distinct Subsequences II 不同的子序列 II-耗时100

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 困难题 940. Distinct Subsequences II 不同的子序列 II-耗时100

Problem: 940. Distinct Subsequences II 不同的子序列 II

耗时100%,动态规划的,考虑两种情况,每种字符都不相同,存在相同的字符,dp[i]表示s[0~i]子字符串的总数,若是s[0~i-1]不存在s[i],那么结果就是dp[i] = (dp[i-1] * 2) + 1;也就是之前的所有子字符串最后面加上s[i]即可,以及包含了s[i]这个单个字符

若s[0~i-1]存在s[i],假设s[j]s[i] (j < i),那么s[0i-1]的子字符串s[j]可以被s[i]替代,相当于s[0j-1]的子字符串添加上s[i]或s[j],此时末尾加上s[i]或者s[j]效果相同,所以重复了一次,需要减去的也就是dp[i] = dp[i] - 1 - dp[j-1] + modulo; -1是单字符s[i]本身重复了一次,而且当j0时,需要特殊考虑此时dp[i] = dp[i] - 1 + modulo

考虑到dp[i] = dp[i] - 1 - dp[ind-1]可能<0,所以需要加上模1e9+7

Code

class Solution { public: int ch[26]; const long long modulo = 1e9 + 7; int distinctSubseqII(string s) { fill(ch, ch + 26, -1); int n = s.size(), ind; if(n==1) return 1; vector<long long> dp(n, 0); dp[0] = 1; ch[s[0]-'a'] = 0; for(int i = 1; i < n; i++) { dp[i] = (dp[i-1] << 1) + 1; ind = ch[s[i]-'a']; if(ind == 0) { dp[i] = dp[i] - 1 + modulo; } else if(ind > 0){ dp[i] = dp[i] - 1 - dp[ind-1] + modulo; } ch[s[i]-'a'] = i; dp[i] = dp[i] % modulo; } int ret = dp[n-1] % modulo; return ret; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 5:53:58

从中网产业协同到特劳特心智卡位,2026三大标杆破解B2B增长迷局

本文将围绕中网产业协同和特劳特心智卡位在2026年为B2B企业提供的增长机会展开讨论。通过分析三大标杆案例&#xff0c;揭示这些策略如何帮助企业有效应对增长挑战&#xff0c;实现数字转型的成功与市场占有率的提升。具体内容将包括协同策略与客户体验之间的关系、合作创新的重…

作者头像 李华
网站建设 2026/10/5 10:50:07

【小程序毕设源码分享】基于springboot+小程序的二手书城app的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/10/5 7:21:41

C#每日面试题-ref和out的区别

C#每日面试题-ref和out的区别 大家好&#xff0c;我是专注于C#面试干货分享的博主&#xff0c;今天咱们拆解另一道高频基础面试题——ref和out关键字的区别。这两个关键字都是C#中用于“按引用传递参数”的核心语法&#xff0c;看似功能相似&#xff0c;很多新手甚至资深开发者…

作者头像 李华
网站建设 2026/9/30 19:28:48

别再瞎找了!千笔,抢手爆款的AI论文软件

你是否曾为论文选题发愁&#xff0c;绞尽脑汁却无从下手&#xff1f;是否在深夜面对空白文档&#xff0c;思绪枯竭、无从落笔&#xff1f;又或者反复修改却始终不满意表达效果&#xff1f;论文写作的每一步都充满挑战&#xff0c;而这些难题&#xff0c;正在被千笔AI一一化解。…

作者头像 李华
网站建设 2026/9/30 20:26:27

【电力系统】基于极限学习机的DC-DC转换器建模附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…

作者头像 李华