力扣 中等 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;
    }
}
相关推荐
AI风老师14 分钟前
5、docker镜像管理命令
java·docker·eureka
用户849137175471625 分钟前
JustAuth实战系列(第5期):建造者模式进阶 - AuthRequestBuilder设计解析
java·设计模式·架构
励志成为糕手1 小时前
从反射到方法句柄:深入探索Java动态编程的终极解决方案
java·开发语言
是乐谷1 小时前
饿了么招java开发咯
java·开发语言·人工智能·程序人生·面试·职场和发展
zhysunny2 小时前
20.万物皆可变身术:状态模式架构全景解析
java·状态模式
hongjunwu2 小时前
Java集合的遍历方式(全解析)
java·开发语言·windows
cccc来财2 小时前
Golang的本地缓存freecache
java·开发语言·jvm
Barcke2 小时前
缓存界的 "双保险":打工人救星来了!(本地缓存 + Redis 双剑合璧,轻松应对高并发)
java·后端
用户84913717547162 小时前
JDK 17 实战系列(第5期):开发工具与API增强详解
java·jvm·架构
啊阿狸不会拉杆3 小时前
《算法导论》第 13 章 - 红黑树
数据结构·c++·算法·排序算法