力扣9.28

devtools/2024/10/9 2:45:25/

377. 组合总和 Ⅳ

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。

题目数据保证答案符合 32 位整数范围。

数据范围

  • 1 <= nums.length <= 200
  • 1 <= nums[i] <= 1000
  • nums 中的所有元素 互不相同
  • 1 <= target <= 1000

分析

dp[i]表示总和为i的方案数

  • d p [ i ] + = ∑ j = 1 n d p [ i − n u m s [ j ] ] dp[i]+=\sum_{j=1}^{n}dp[i-nums[j]] dp[i]+=j=1ndp[inums[j]]

代码

class Solution {
public:const static int N = 1005, M = 205;unsigned long long dp[N];unsigned long long combinationSum4(vector<int>& nums, int target) {int n = nums.size();dp[0] = 1;for(int i = 0; i <= target; i ++ ) {for(int j = 1; j <= n; j ++ ) {if(i >= nums[j - 1])dp[i] += dp[i - nums[j - 1]];}}return dp[target];}
};

2466. 统计构造好字符串的方案数

给你整数 zeroonelowhigh ,我们从空字符串开始构造一个字符串,每一步执行下面操作中的一种:

'0' 在字符串末尾添加 zero 次。
'1' 在字符串末尾添加 one 次。
以上操作可以执行任意次。

如果通过以上过程得到一个 长度 在 lowhigh 之间(包含上下边界)的字符串,那么这个字符串我们称为 好 字符串。

请你返回满足以上要求的 不同 好字符串数目。由于答案可能很大,请将结果对 109 + 7 取余 后返回。

数据范围

  • 1 <= low <= high <= 105
  • 1 <= zero, one <= low

分析

和上题思路一样,都算是爬楼梯类型

代码

class Solution {
public:const static int N = 1e5 + 5, mod = (int)1e9 + 7;unsigned long long dp[N];unsigned long long countGoodStrings(int low, int high, int zero, int one) {dp[0] = 1;unsigned long long res = 0;for(int i = 1; i <= high; i ++ ) {if(i >= zero) dp[i] += dp[i - zero];if(i >= one) dp[i] += dp[i - one];if(i >= low) res += dp[i];dp[i] %= mod;res %= mod;}return res;}
};

2266. 统计打字方案数

题目链接

分析

爬楼梯变式,令dp[i]为长度为i的字符串可能的文字信息数

  • d p [ i ] + = ∑ j = 1 l a s t n u m s d p [ i − j ] ,其中 l a s t n u m s 为与 n u m s [ i ] 相接的相同数字个数,例如 2333 第 4 个位置的 3 的 l a s t n u m s 为 3 dp[i]+=\sum_{j=1}^{lastnums}dp[i-j],其中lastnums为与nums[i]相接的相同数字个数,例如2333第4个位置的3的lastnums为3 dp[i]+=j=1lastnumsdp[ij],其中lastnums为与nums[i]相接的相同数字个数,例如23334个位置的3lastnums3

代码

class Solution {
public:const static int N = 1e5 + 5, mod = (int)1e9 + 7;unsigned long long dp[N];int cnt[30];unsigned long long countTexts(string pressedKeys) {int n = pressedKeys.size();for(int i = 2; i <= 9; i ++ ) cnt[i] = 3;cnt[7] = cnt[9] = 4;int lastNums = 0;dp[0] = 1;int tlast = 0;for(int i = 1; i <= n; i ++ ) {if(i >= 2) {if(pressedKeys[i - 1] == pressedKeys[i - 2]) lastNums ++ ;else lastNums = 1;} else lastNums = 1;tlast = min(lastNums, cnt[pressedKeys[i - 1] - '0']);for(int j = 1; j <= tlast; j ++ ) {dp[i] += dp[i - j];dp[i] %= mod;}}return dp[n];}
};

http://www.ppmy.cn/devtools/120834.html

相关文章

Windows下jenkins执行远程sh脚本中文乱码问题

找到jenkins的安装目录下的jenkins.xml文件&#xff0c;在启动参数后面加上-Dfile.encodingutf-8 然后在服务里重启jenkins服务即可

网络协议的作用是什么

在现代网络环境中&#xff0c;各种设备之间的有效通信离不开网络协议。网络协议是计算机网络中进行信息交换的规则和标准。它们定义了数据传输的格式、顺序、错误处理、以及设备如何相互识别等重要方面。本文将深入探讨网络协议的作用及其在网络通信中的重要性。 什么是网络协…

深化专业,广纳技能,构建软实力

一、引言 ----  随着人工智能&#xff08;AI&#xff09;和生成式人工智能&#xff08;AIGC&#xff09;如ChatGPT、Midjourney、Claude等大语言模型的持续涌现&#xff0c;AI辅助编程工具日益普及&#xff0c;程序员的工作方式正在经历深刻的变革。这种变革既带来了对部分编…

sql注入工具升级:自动化时间盲注、布尔盲注

项目地址&#xff1a;https://github.com/iamnotamaster/sql-injecter 给我之前写的sql注入脚本进行了一些升级&#xff0c;此文章就是对升级内容的分析&#xff0c;升级内容如下&#xff1a; 使用占位符foo来填充payload里需要经常修改的部分 自动判断循环 支持爆破和二分查…

滚雪球学MySQL[11.2讲]:MySQL未来学习方向:大数据、云计算与迁移路径

全文目录&#xff1a; 前言11.2 未来学习方向1. MySQL与大数据1.1 MySQL与大数据生态的结合1.2 MySQL在大数据场景中的应用 2. MySQL与云计算2.1 云数据库服务2.2 容器化与MySQL2.3 云计算与MySQL的结合优势 3. MySQL的替代与迁移3.1 迁移到NoSQL数据库3.2 迁移到分布式SQL数据…

LeetCode从入门到超凡(四)深入浅出理解贪心算法

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的LeetCode学习总结文档&#xff1b;本文主要讲解贪心算法。&#x1f495;&#x1f495;&#x1f60a; 介绍 贪心算法是一种经典的算法…

基础算法之滑动窗口--Java实现(上)--LeetCode题解:长度最小的子数组-无重复字符的子串-最大连续1的个数III-将x减到0的最小操作数

这里是Thembefue 今天讲解算法中较为经典的一个算法 > 滑动窗口 本讲解主要通过题目来讲解以理解算法 讲解分为三部分&#xff1a;题目解析 > 算法讲解 > 编写代码 滑动窗口 在正式进入题目的讲解之前&#xff0c;得先了解一下什么是滑动窗口&#xff0c;以及应该在什…

828华为云征文|华为云弹性云服务器FlexusX实例下的Nginx性能测试

本文写的是华为云弹性云服务器FlexusX实例下的Nginx性能测试 目录 一、华为云弹性云服务器FlexusX实例简介二、测试环境三、测试工具四、测试方法五、测试结果 下面是华为云弹性云服务器FlexusX实例下的Nginx性能测试。 一、华为云弹性云服务器FlexusX实例简介 华为云弹性云服…