力扣 中等 2466.统计构造好字符串的方案数

文章目录

题目介绍

题解

题意 :每次可以爬 zeroone 个台阶,返回爬 lowhigh 个台阶的方案数。

和上题337.组合总和 (链接)的思路一样,只不过是将可以爬的台阶数从数组换成了两个数(zero和one)

代码如下:

java 复制代码
class Solution {
    public int countGoodStrings(int low, int high, int zero, int one) {
        final int MOD = 1000000007;
        int ans = 0;
        int[] dp = new int[high + 1]; // dp[i] 表示构造长为 i 的字符串的方案数
        dp[0] = 1; // 构造空串的方案数为 1
        for (int i = 1; i <= high; i++) {
            if (zero <= i) dp[i] = dp[i - zero] % MOD;
            if (one <= i)  dp[i] = (dp[i] + dp[i - one]) % MOD;
        }
        for (int i = low; i <= high; i++) {
            ans = (ans + dp[i]) % MOD;
        }
        return ans;
    }
}

简化代码:将两个for循环合并成一个

java 复制代码
class Solution {
    public int countGoodStrings(int low, int high, int zero, int one) {
        final int MOD = 1000000007;
        int ans = 0;
        int[] dp = new int[high + 1]; // dp[i] 表示构造长为 i 的字符串的方案数
        dp[0] = 1; // 构造空串的方案数为 1
        for (int i = 1; i <= high; i++) {
            if (i >= zero) dp[i] = dp[i - zero];
            if (i >= one)  dp[i] = (dp[i] + dp[i - one]) % MOD;
            if (i >= low)  ans = (ans + dp[i]) % MOD;
        }
        return ans;
    }
}
相关推荐
星马梦缘4 分钟前
算法设计与分析 作业三 纯答案
算法
半夜燃烧的香烟4 分钟前
docker 安装minio nginx,配置nginx根据文根路由minio展示图片
java·nginx·docker
吴阿福|一人公司6 分钟前
深度解析 Python 类变量修改的命名空间隔离
java·服务器·数据结构
zzz_236811 分钟前
【Java基础】链表的七十二变——从LRU缓存到手写浏览器前进后退
java·链表·缓存
番茄去哪了14 分钟前
神领物流面试题(一)
java·大数据·中间件
云烟成雨TD15 分钟前
Agent Scope Java 2.x 系列【9】接入高德 MCP 服务
java·人工智能·agent
不知名的老吴30 分钟前
经典算法题之行星碰撞
数据结构·算法
gaohe26AIliuzeyu33 分钟前
Java内部类
java·开发语言
西安邮电大学37 分钟前
有关数组的经典算法题
java·后端·其他·算法·面试
互联网推荐官40 分钟前
上海AI Agent智能体开发公司技术选型实录:六条路径、三类架构与真实落地约束
java·人工智能·ai·架构·开发经验·上海