LeetCode 每日一题 Day 45(Hard) || 数位DP

2719. 统计整数数目

给你两个数字字符串 num1 和 num2 ,以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件,我们称它是一个好整数:

num1 <= x <= num2
min_sum <= digit_sum(x) <= max_sum.
请你返回好整数的数目。答案可能很大,请返回答案对 109 + 7 取余后的结果。

注意,digit_sum(x) 表示 x 各位数字之和。

示例 1:

输入:num1 = “1”, num2 = “12”, min_num = 1, max_num = 8
输出:11
解释:总共有 11 个整数的数位和在 1 到 8 之间,分别是 1,2,3,4,5,6,7,8,10,11 和 12 。所以我们返回 11 。
示例 2:

输入:num1 = “1”, num2 = “5”, min_num = 1, max_num = 5
输出:5
解释:数位和在 1 到 5 之间的 5 个整数分别为 1,2,3,4 和 5 。所以我们返回 5 。

提示:

1 <= num1 <= num2 <= 1022
1 <= min_sum <= max_sum <= 400

数位DP根本不会,背了板子都写错了,还得靠灵神:

class Solution {
public:int count(string num1, string num2, int min_sum, int max_sum) {int n = num2.length();num1 = string(n - num1.length(), '0') + num1; // 补前导零,和 num2 对齐vector<vector<int>> memo(n, vector<int>(min(9 * n, max_sum) + 1, -1));function<int(int, int, bool, bool)> dfs = [&](int i, int sum, bool limit_low, bool limit_high) -> int {if (sum > max_sum) { // 非法return 0;}if (i == n) {return sum >= min_sum;}if (!limit_low && !limit_high && memo[i][sum] != -1) {return memo[i][sum];}int lo = limit_low ? num1[i] - '0' : 0;int hi = limit_high ? num2[i] - '0' : 9;int res = 0;for (int d = lo; d <= hi; d++) { // 枚举当前数位填 dres = (res + dfs(i + 1, sum + d, limit_low && d == lo, limit_high && d == hi)) % 1'000'000'007;}if (!limit_low && !limit_high) {memo[i][sum] = res;}return res;};return dfs(0, 0, true, true);}
};

这里指路灵神题解:两种数位 DP 模板

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

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

相关文章

2.6、云负载均衡产品详述

一、定义 弹性负载均衡(Elastic Load Balance&#xff0c;简称ELB)可将来自公网的访问流量分发到后端云主机&#xff0c;可选多种负载均衡策略&#xff0c;并支持自动检测云主机健康状况&#xff0c;消除单点故障&#xff0c;保障应用系统的高可用。 二、产品架构 1&am…

知识笔记(八十二)———链式语句中distinct和lock用法

DISTINCT 方法用于返回唯一不同的值 。 例如数据库表中有以下数据 以下代码会返回user_login字段不同的数据 Db::table(think_user)->distinct(true)->field(user_login)->select();生成的SQL语句是&#xff1a; SELECT DISTINCT user_login FROM think_user 返回…

APM链路监控: Linux 部署 pinpoint

目录 一、实验 1.环境 2. 准备 3.HBase单机部署 4.pinpoint部署 二、问题 1.pinpoint有哪些功能 2.pinpoint架构是如何组成的 3.Linux中自带的jdk 如何设置JAVA_HOME 4. hbase启动报错 5.hbase的master启动失败 6.JPS命令如何安装和使用 一、实验 1.环境 &#x…

Ansible Filter滤波器的使用(二)

一、【说在前面】 Ansible Filter一般被称为滤波器或者叫过滤器。 这个东西初次听到以为是什么科学计算的东西&#xff0c;但是想来ansible不太可能有什么滤波操作&#xff0c;所以这个东西本质是一个数值筛选器&#xff0c;内置函数&#xff0c;本质是一个为了做区别化的工具…

【稳定检索、投稿优惠】2024年机械自动化与电力系统国际会议(IACMAPS 2024)

2024年机械自动化与电力系统国际会议(IACMAPS 2024) 2024 International Conference on Mechanical Automation and Power Systems(IACMAPS 2024) 一、【会议简介】 2024年机械自动化与电力系统国际会议(IACMAPS 2024)将在大理盛大召开。本次会议旨在汇聚全球的机械自动化与电力…

gsap timeline示例-实现滚动切换手机颜色

前言 最近使用gsap有点上瘾。看过一个手机官网滚动切换手机颜色的效果&#xff0c;初次见还是很炫。所以呢&#xff0c;就去研究了下&#xff0c;发现也不过如此。我们现在使用gsap来实现它。 首先来看最终效果&#xff1a; gsap timeline示例-实现滚动切换手机颜色 实现原理…

[HarmonyOS]第一课:ArkTS开发语言介绍

判断题 1. 循环渲染ForEach可以从数据源中迭代获取数据&#xff0c;并为每个数组项创建相应的组件。 答&#xff1a;正确(True) 2. Link变量不能在组件内部进行初始化。 答&#xff1a;正确(True) 单选题 1. 用哪一种装饰器修饰的struct表示该结构体具有组件化能力&#x…

这10个技巧你都会?绝对算网络抓包高手!

中午好&#xff0c;我的网工朋友。抓包工具Wireshark大家都知道&#xff0c;它可以截获和分析网络数据封包&#xff0c;检测网络上的问题&#xff0c;比如网络延迟、数据丢失、拥堵等&#xff0c;以及评估网络性能。 当网络里发现恶意攻击、某人下载流量过大、设备互联丢包、协…

C#微信公众号HIS预约挂号系统源码

微信公众号预约挂号系统、支付宝小程序预约挂号系统主要是让自费、医保患者在手机上就能实现就医全过程&#xff0c;实时预约挂号、自费、医保结算&#xff0c;同时还可以查询检查检验报告等就诊信息&#xff0c;真正实现了让信息“多跑路”&#xff0c;让群众“少跑腿”。系统…

NXP采用RS RTS测试系统,验证28纳米RFCMOS雷达单芯片 |百能云芯

Rohde & Schwarz的雷达目标模拟器R&S RTS&#xff0c;作为汽车雷达的颠覆性解决方案&#xff0c;尤其是其能够电子模拟非常近距离物体的能力&#xff0c;已被用于验证NXP半导体的下一代雷达传感器参考设计的性能。 这一合作使汽车行业在汽车雷达的发展上迈出了一步&…

python热重载调试神器Reloadium,Debug工具用print太慢了

作为程序员&#xff0c;我们都深知调试&#xff08;Debug&#xff09;在编程过程中的重要性。然而&#xff0c;使用传统的"print"语句进行调试可能效率较低&#xff0c;今天&#xff0c;笔者将推荐一款独具一格的Python调试工具——Reloadium。Reloadium为IDE添加了热…

[HarmonyOS]第一课:运行HelloWorld

判断题 1. DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。 答&#xff1a;正确(True) 2. main_pages.json存放页面page路径配置信息。 答&#xff1a;正确(True) 单选题 1. 在stage模型中&#xff0c;下列配置文件属于AppScope文件夹的是&#xff1f; A. main_…

ChatGPT vs 文心一言: 两大AI助手的较量

文章目录 每日一句正能量前言ChatGPTChatGPT的优点ChatGPT的劣势 文心一言文心一言的优势文心一言的劣势 后记 每日一句正能量 无所不能的人实在一无所能&#xff0c;无所不专的专家实在是一无所专。 前言 随着人工智能技术的发展&#xff0c;ChatGPT和文心一言已成为广受欢迎…

LY/T 2878-2017 木镶板门检测

木镶板门是指由木镶板门扇和木镶板门框组成的木门&#xff0c;根据构成材料的不同&#xff0c;分为实木木镶板门&#xff0c;实木复合木镶板门和木质复合木镶板门。 LY/T 2878-2017 木镶板门检测项目 测试项目 测试标准 外观 LY/T 1923 尺寸及偏差 LY/T 1923 含水率 LY…

java cc链3TrAXFilter与InstantiateTransformer

java cc链3TrAXFilter与InstantiateTransformer 上文最后调用 templates.newTransformer()cc链1中&#xff0c;是通过InvokerTransformer.transform方法&#xff0c;通过反射进而执行系统命令&#xff0c;这里通过反射调用TemplatesImpl.newTransformer&#xff0c;实现和temp…

Linux命令之pwd,cd,ls,cat,more,less,head,tail文件目录类命令的使用

一、实验题 在桌面打开终端&#xff0c;查看当前目录 改变目录位置至当前目录的父目录 改变目录位置至用户的家目录 利用绝对路径改变目录到/usr/local目录下 列出当前目录下的文件及目录 列出包括以“.”开始的隐藏文件在内的所有文件 列出当前目录下所有文件的权限、所有者、…

【消息队列】MQ 是什么?为什么用MQ?怎么实现MQ?

一、消息队列是什么&#xff1f; 消息队列&#xff08;MQ&#xff09; 是一种在分布式系统中&#xff0c;用于在应用程序之间传递消息的通信机制。它通常包含一个消息生产者、一个消息消费者和一个消息队列。消息队列允许应用程序异步地将消息发送到队列&#xff0c;而不需要立…

Go后端开发 -- 面向对象特征:结构体 继承 多态 interface

Go后端开发 – 面向对象特征&#xff1a;结构体 && 继承 && 多态 && interface 文章目录 Go后端开发 -- 面向对象特征&#xff1a;结构体 && 继承 && 多态 && interface一、Go的结构体1.结构体的声明和定义2.结构体传参 二、将…

简易机器学习笔记(十一)opencv 简易使用-人脸识别、分类任务

前言 前段时间摸了下机器学习&#xff0c;然后我发现其实openCV还是一个很浩瀚的库的&#xff0c;现在也正在写一篇有关yolo的博客&#xff0c;不过感觉理论偏多&#xff0c;所以在学yolo之前先摸一下opencv&#xff0c;简单先写个项目感受感受opencv。 流程 openCV实际上已…

Go interface基础

接口类型是对其它类型行为的概括与抽象。通过使用接口&#xff0c;我们可以写出更加灵活和通用的函数&#xff0c;这些函数不用绑定在一个特定的类型实现上。 很多面向对象的语言都有接口这个概念&#xff0c;Go 语言的接口的独特之处在于它是隐式实现。换句话说&#xff0c;对…