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

文章目录

题目介绍

题解

题意 :每次可以爬 zero 或 one 个台阶,返回爬 low 到 high 个台阶的方案数。

和上题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;
    }
}
相关推荐
信奥卷王2 分钟前
[GESP202509 六级] 货物运输(含视频)
算法
StevenLdh9 分钟前
第八期 · 情绪闯关挑战盒:一个「无惩罚」成就系统的数据建模
java·微信小程序
Wang's Blog17 分钟前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务消费者
java·dubbo·交友
IT研究室25 分钟前
最新计算机毕业设计选题推荐-基于spring boot的教育学习平台-网站-文档指导-Java-springboot
java·spring boot·课程设计
余额瞒着我当琳26 分钟前
C++算法学习篇5--二分查找法
c++·学习·算法
亚林瓜子27 分钟前
Spring Boot 集成 ip2region 离线 IP 库实战指南
java·spring boot·后端·ip·ip2region
起个名字费劲死了36 分钟前
基于灰度/形状的2D模板匹配
算法
杜 硕42 分钟前
归并排序详解
数据结构·算法·排序算法
科技观察哨1 小时前
国产纳米定位平台与精密位移台量产能力图谱(2026):Z轴压电、XYθZ、六自由度并联与光刻/检测/装配选型指南
网络·人工智能·算法
盛世宏博智慧档案1 小时前
恒湿净化一体机联动开发:档案馆温湿度阈值判断与启停控制实践
java·后端·struts·恒湿机·加湿除湿消毒净化一体机