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

思路:dp

其实这道题总的来说,就是爬楼梯问题,大家可以转化一下,并且发现一下爬楼梯问题的规律。

爬楼梯问题,基本上题目的状态只有两个,并且是固定的(不排除有变形的爬楼梯题目),递推的过程都是从小到大递推的。

好了,看看这道题,我们对照一下,首先,这里有两种操作,就是对应的两种固定的状态,我们可以通过这两个状态操作把字符串构造出来,再然后,我们这个字符串也是需要从小字符串推到大字符串的,所以这一点也和我们的结论符合,这就是一道变了题目的爬楼梯。

这里的递推关系就不多说了,dp[i]就代表的是构造长度为i的字符串有多少种方案的含义。

其他的步骤,也就是我们所给的zero,one,就代表着每次爬多少楼梯,low到high是我们需要统计的。

注意:在我们进行递推的时候,千万要注意,在循环的时候不要把i最开始初始化为low,因为这里的low并一定是从1开始递推的,而我们的dp数组是需要依次递推过来的,这一点需要注意;

在统计个数的时候,我们需要从low遍历到high这段距离,这一点是题目要求,不要忘记。

还有,在我们爬楼梯的过程中,变量是不明确的,也就是不知道数值是如何的,我们需要有一个if else判断语句,不然只会显示溢出,出现错误。

class Solution {public int countGoodStrings(int low, int high, int zero, int one) {int []dp=new int[100010];dp[0]=1;for(int i=1;i<=high;i++){if(i>=zero&&i>=one)dp[i]=(dp[i-zero]+dp[i-one])%1000000007;else if(i>=zero&&i<one)dp[i]=dp[i-zero];else if(i<zero&&i>=one)dp[i]=dp[i-one];}int ans=0;for(int i=low;i<=high;i++)ans=(ans+dp[i])%1000000007;return ans;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVM】类加载机制

类加载的生命周期 类加载过程&#xff1a;加载->连接->初始化。连接过程又可分为三步&#xff1a;验证->准备->解析。 总结&#xff1a; 五个阶段&#xff1a;加载、验证、准备、解析、初始化 PS&#xff1a;其中解析阶段在某些情况下可以在初始化阶段之后开始。…

Nacos扩展:使用nacos实现自定义文本配置的实时刷新

文章目录 一、背景二、编码1、spring.factories2、NacosPropertiesLoader3、NacosConfigHandler4、NacosLoaderConfiguration5、测试类6、扩展 一、背景 我们都知道&#xff0c;使用Nacos时&#xff0c;如果将Bean使用RefreshScope标注之后&#xff0c;这个Bean中的配置就会做…

数仓分层——ODS、DW、ADS

一、什么是数仓分层 数据仓库分层是一种组织和管理数据仓库的结构化方法&#xff0c;它将数据仓库划分为不同的层次或级别&#xff0c;每个层次具有特定的功能和目的。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问&#xff0c;并提供一种清晰的结构来支持…

java接受入参是xml格式参数demo

java接受入参是xml格式参数demo 依赖demo1. xml入参定义2.接口定义3. postman请求4. 结果 注解说明 依赖 pom依赖 jackson-dataformat-xml <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</…

Python实现txt转Excel(坐标)

import pandas as pddef txt_to_excel(txt_file, excel_file):# 读取 txt 文件with open(txt_file, r) as f:lines f.readlines()# 将每行数据分割成多个单元格data []for line in lines:row line.strip().split( )data.append(row)# 将数据保存到 Excel 文件df pd.DataFra…

EPAI手绘建模APP数值几何变换

(10) 数值几何变换 图 257 数值几何变换工具栏 ① 数值几何变换和交互式几何变换都包括移动、旋转、缩放模型。但是交互式几何变换变换时的变换轴是模型自身中心为变换中心&#xff0c;以X、Y、Z方向的为变换方向&#xff0c;而数值几何变换可以指定变换中心和变换方向。另外&a…

HashSet和TreeSet的区别是什么?

HashSet和TreeSet的区别是什么&#xff1f; HashSet和TreeSet是Java集合框架中两种常用的Set实现&#xff0c;它们各自有独特的特点和用途。以下是它们之间的主要区别&#xff1a; 存储顺序&#xff1a; HashSet&#xff1a;不保证元素的存储顺序&#xff0c;也不保证元素的…

(超简单)SpringBoot中简单用工厂模式来实现

简单讲述业务需求 业务需要根据不同的类型返回不同的用户列表&#xff0c;比如按角色查询用户列表、按机构查询用户列表&#xff0c;用户信息需要从数据库中查询&#xff0c;因为不同的类型查询的逻辑不相同&#xff0c;因此简单用工厂模式来设计一下&#xff1b; 首先新建一个…

花的花语和传说

花的花语和传说往往紧密相连&#xff0c;它们共同构成了花卉文化的丰富内涵。以下是一些常见花卉的花语和传说&#xff1a; 玫瑰&#xff1a; 花语&#xff1a;爱情、美丽、和平、友谊、勇敢、献身。传说&#xff1a;古希腊和古罗马神话中&#xff0c;玫瑰与美神阿芙洛狄忒&…

数据结构-线性表-应用题-2.2-12

1&#xff09;算法的基本设计思想&#xff1a;依次扫描数组的每一个元素&#xff0c;将第一个遇到的整数num保存到c中&#xff0c;count记为1&#xff0c;若遇到的下一个整数还是等于num,count,否则count--,当计数减到0时&#xff0c;将遇到的下一个整数保存到c中&#xff0c;计…

Hadoop快速搭建指南

# Hadoop快速搭建指南## 前言 作为一个处理大数据的工具&#xff0c;Hadoop已经成为许多企业进行数据处理和分析的首选。但如果你第一次接触它&#xff0c;设置和配置可能看起来有点棘手。因此&#xff0c;我将为你提供一个详细的指南&#xff0c;让你可以快速搭建并运行Hadoop…

328_C++_HTTP_HTTP协议传输data数据,为什么要进行base64编解码操作?

http传输data数据的时候&#xff0c;为什么必须进行base64转码后才能有效发送&#xff0c;接收方也必须base64转码后才能有效接受&#xff1f; HTTP  HTTP传输数据时&#xff0c;使用Base64编码并不是必须的&#xff0c;但它确实在某些情况下非常有用。以下是为什么在某些情况…

CSS引用

CSS定义 层叠样式表&#xff1a;&#xff08;Cascading Style Sheets,缩写为css&#xff09;,是一种样式表语言&#xff0c;用来描述HTML文档的呈现&#xff08;美化内容&#xff09; 书写位置&#xff1a;title标签下方添加style双标签&#xff0c;style标签里写入CSS代码 在s…

《构建高效的财务管理系统:设计与实现》

在当今数字化时代&#xff0c;企业财务管理系统的设计与实现至关重要。一个高效的财务管理系统不仅能够提高企业的运营效率&#xff0c;还能够增强企业的竞争力&#xff0c;为企业的发展提供有力支持。本文将探讨财务管理系统的设计与实现&#xff0c;为企业打造一套符合自身需…

电脑(爱好者) :基础知识1 了解你的电脑

读懂cpu 您想了解关于您的电脑的信息吗&#xff1f;CPuz是一款常用的系统信息工具&#xff0c;可以提供关于CPU、主板、内存等硬件信息的详细情况。您可以下载并运行该软件&#xff0c;然后查看您的电脑硬件配置信息。 图片来源于网络 CPU-Z 简介 CPU-Z 是一款功能强大且易于使…

设计模式——工厂模式(Factory)

工厂模式&#xff08;Factory Pattern&#xff09;是一种常用的设计模式&#xff0c;它提供了一种封装创建对象过程的方法。通过工厂方法或工厂类&#xff0c;你可以将对象的创建与使用分离&#xff0c;使得代码更加灵活和可维护。工厂模式主要分为三种类型&#xff1a;简单工厂…

Python-VBA函数之旅-range函数

目录 一、range函数的常见应用场景 二、range函数使用注意事项 三、如何用好range函数&#xff1f; 1、range函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.2…

Android OpenMAX(三)高通OMX组件实现基础

上一节了解了OMX组件实现的基础内容,这一节我们以高通OMX实现为例,简单看看如何实现一个OMX组件。本节代码参考自: omx_core_cmp.cpp qc_omx_component.h omx_vdec.h omx_vdec.cpp Tips:本篇文章旨在简单了解如何实现一个OMX组件,细节的内容不会仔细解读,代码阅读跳跃幅度…

JavaSE——异常(1/2)-认识异常(介绍,异常的体系,了解如何解决异常)、自定义异常(自定义异常的种类,实例演示)

目录 认识异常 介绍 异常的体系 了解如何解决异常 自定义异常 自定义异常的种类 实例演示 认识异常 介绍 什么是异常&#xff1f; 异常就是代表程序出现的问题。 比如&#xff1a; int[] arr {10,20,30}; System.out.println(arr[3]);System.out.println(10 / 0); …

VS调试技巧

1. 什么是bug bug本意是“昆⾍”或“⾍⼦”&#xff0c;现在⼀般是指在电脑系统或程序中&#xff0c;隐藏着的⼀些未被发现的缺陷或 问题&#xff0c;简称程序漏洞。 “Bug” 的创始⼈格蕾丝赫柏&#xff08;Grace Murray Hopper&#xff09;&#xff0c;她是⼀位为美国海军⼯…