【LeetCode】每日一题 2024_9_20 统计特殊整数(数位 DP)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:统计特殊整数

代码与解题思路

func countSpecialNumbers(n int) int { // 今天的题目是数位 DP,我不会做,所以现场学习了一下灵神的数位 DP 模版s := strconv.Itoa(n)m := len(s)memo := make([][1<<10]int, m) // 记忆化,每个数位 0~9,二维的二进制开 10 个数位for i := range memo {for j := range memo[i] {memo[i][j] = -1}}// mask 代表的是当前的整数使用 0~9 这几个数位的集合// isLimit 代表的数字是否对应,需不需要约束,true 代表需要约束// isNum true 代表前面填了数字,false 代表没填,防止前导零的情况var dfs func(int, int, bool, bool) int  dfs = func(i, mask int, isLimit, isNum bool) (res int) {if i == m { // 遍历完所有数位了if isNum { // 如果最后一位数也填了,是个正常的数字return 1 // 证明有一个特殊整数}return 0 // 不算特殊整数,返回 0}// 记忆化:只记忆合法数字的情况(约束情况只出现一次,所以也不记忆)if !isLimit && isNum {p := &memo[i][mask]if *p != -1 {return *p}defer func() {*p = res}()}if !isNum { // 前面一个数字没填,那这个数字也可以不填(不填的情况)res += dfs(i+1, mask, false, false) // 前面没有约束}// 填数字的情况d := 0if !isNum { // 如果前面那个数字没填,那就不能填 0 d = 1}up := 9 // 没有约束默认上限是 9if isLimit { // 如果有约束,就设置 up 为约束的上限up = int(s[i]-'0')}for d <= up { // 枚举符合条件的每一个数字if mask >> d & 1 == 0 { // 没用过这个数字// mask|1<<d 标记这个数字在 mask 二进制的数位// isLimit&&d == up 如果上一个数字是约束,这个数字又是上限,那就存在约束res += dfs(i+1, mask|1<<d, isLimit&&d == up, true) // 填了数字}d++}return res}return dfs(0, 0, true, false) // 第一个数字自然需要约束
}

题目很短,是非常经典的数位 DP 题目

唯一的问题就是 . . . 不会做

数位 DP 难度较高,我在比较难理解的地方都写了注释,推荐看灵神写的 -> 数位 DP 通用模版 我使用的就是他的模版,很好用,也比较好理解。

视频实况

【【LeetCode】每日一题 2024_9_20 统计特殊整数(数位 DP)】

每天进步一点点

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

轻松打造:用Python实现手机与电脑间的简易消息系统

展示&#x1f3a5; 观看视频&#xff1a;&#x1f440;&#xff0c;这是之前完成的一个项目&#xff0c;但今天我们的重点不是这个哦。 告别往昔&#xff0c;启航新篇章 现象&#x1f31f; 智能互动&#xff1a;&#x1f4f1; 我们每天都在享受与智能设备的互动&#xff0c;…

哪个快?用300万个图斑测试ArcGIS Pro的成对叠加与经典叠加

​​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 在使用ArcGIS Pro的过程中&#xff0c;很多朋友发现&#xff0c;Pro有个成对叠加工具集。很多…

图片转pdf在线怎么转?分享5种简单好用的转换方法

在日常工作和学习中&#xff0c;我们经常会遇到需要将图片转换为PDF格式的情况。无论是为了保存文档方便查阅&#xff0c;还是为了提升文件的专业性和安全性&#xff0c;掌握图片转PDF的技巧都显得尤为重要。下面给大家分享5种转换方法&#xff0c;简单高效&#xff0c;一起来了…

b2b2c商城系统好用么 多用户商城系统四大盈利模式

商淘云B2B2C商城系统能帮助企业快速搭建企业自己的多用户商城系统&#xff0c;它提供了多种功能&#xff0c;如多商家管理、订单处理、支付模块集成等&#xff0c;适合各种规模的企业。用户界面友好&#xff0c;且支持定制化&#xff0c;能满足不同业务需求。 多用户商城有四大…

HTTP协议详解以及常见的状态码

HTTP协议的定义&#xff1a; HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一种建立在TCP&#xff08;传输控制协议&#xff09;之上的无状态连接协议。它是互联网的基础协议之一&#xff0c;用于客户端与服务器之间的通信。HTTP规定…

【C++二叉树】105.从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09; 根据前序遍历和中序遍历构建二叉树 前序遍历访问方式&#xff1a;根-左子树-右子树 中序遍历访问方式&#xff1a;左子树-根-右子树 思路分析&#xff1a; 前序中序可以构建一颗二叉树&#xf…

微信视频号的视频怎么下载提取?详细操作流程来了!

微信视频号是腾讯为用户提供的娱乐学习的短视频平台&#xff0c;用户可通过视频号中的内容进行查看浏览&#xff0c;但不少人因视频号本身不具备创作灵感&#xff0c;故此需要下载提取高清视频号的内容。 视频号下载视频 视频下载是用户想通过软件或者插件进行保存微信视频号…

文献阅读(81)FACT

题目&#xff1a;FACT: FFN-Attention Co-optimized Transformer Architecture with Eager Correlation Prediction时间&#xff1a;2023会议&#xff1a;ISCA研究机构&#xff1a;清华 主要贡献 算法优化&#xff1a;提出了Eager Prediction (EP)&#xff0c;预测softmax前重…

马踏棋盘c++

马踏棋盘c 题目回溯问题模型特征模型 代码 题目 马踏棋盘算法&#xff0c;即骑士周游问题。将马放在国际象棋的 88 棋盘的某个方格中&#xff0c;马按走棋规则(马走日字)进行移动。每个方格只进入一次&#xff0c;走遍棋盘上全部 64 个方格。 回溯问题模型 特征 解组织成树…

MySQL高阶1867-最大数量高于平均水平的订单

目录 题目 准备数据 分析数据 题目 您正在运行一个电子商务网站&#xff0c;该网站正在寻找不平衡的订单。不平衡订单的订单最大数量严格大于每个订单&#xff08;包括订单本身&#xff09;的平均数量。 订单的平均数量计算为&#xff08;订单中所有产品的总数量&#xff…

数商:数字时代的新认知

在数字时代&#xff0c;“数商” 概念兴起&#xff0c;代表着人们在该时代应具备的新认知与能力。 数商即数字商数&#xff0c;指个体在数字时代认知、理解、运用数字技术和数据的能力&#xff0c;以及进行有效决策、创新和合作的素养。其内涵包括数字认知能力、数据素养、数字…

计算机毕业论文题目之基于Web技术B/S结构的新生管理系统包含报道,寝室宿舍,缴费学费,数据统计分析汇总等功能的源代码下载

为了满足功能需求&#xff0c;我们将设计并实现一个基于Web技术的B/S架构下的新生管理系统。本系统旨在通过前端与后端分离的设计模式&#xff0c;为用户提供简洁、高效的交互体验&#xff0c;并确保数据的安全性和系统的可扩展性。下面将从系统架构、功能模块以及技术选型三个…

【练习13】字符串中找连续最长的数字串

链接&#xff1a;字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com) 原理分析&#xff1a;模拟双指针 为什么用到BufferedReader 和 InputStreamReader组合输入字符&#xff1f; 因为BufferedReader 内部维护了一个字符缓冲区&#xff0c;调用readLine()方法时&…

全网最全的软件测试八股文

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个…

基于SpringBoot+Vue的剧本杀管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

TI官方资源介绍和使用

该文章会同步发布在知乎和微信公众号&#xff08;雷达原理与系统&#xff09; TI毫米波雷达相关资源介绍 毫米波雷达 硬件 毫米波雷达SOC&#xff08;1642&#xff0c;1843, 1432&#xff0c;2944&#xff09; 收发器MMIC&#xff1a;1432&#xff0c;2243 评估(EVM)板 D…

5万字讲解大模型语言高效推理研究(清华综述)

1.1背景介绍 近年来&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;受到学术界和工业界的广泛关注&#xff0c;得益于其在各种语言生成任务上的出色表现&#xff0c;大语言模型推动了各种人工智能应用&#xff08;例如ChatGPT、Copilot等&#xf…

蘑菇云闲盒业务新手教程

闲盒业务是什么&#xff1f;​ 闲盒是针对小带宽和低配置设备&#xff0c;提供的流量变现业务&#xff0c;可以将用户家里的闲置设备和宽带提供给我们&#xff0c;我们将按您的流量情况&#xff0c;每天给您一笔收益。 闲盒业务优势&#xff1a;​ 带宽利用率高&#xff0c;收…

鸿蒙手势交互(三:组合手势)

三、组合手势 由多种单一手势组合而成&#xff0c;通过在GestureGroup中使用不同的GestureMode来声明该组合手势的类型&#xff0c;支持顺序识别、并行识别和互斥识别三种类型。 GestureGroup(mode:GestureMode, gesture:GestureType[]) //- mode&#xff1a;为GestureMode枚…

TCP报文格式

RFC9293协议规范&#xff0c;规定的TCP格式如图1&#xff0c; 对比RFC793规定的格式&#xff0c;控制位从6bit变成了8bit 图1&#xff0c;图片来源&#xff1a;datatracker.ietf.org 图2为&#xff0c;可对照的中文版TCP格式&#xff0c;中文版参照的是RFC793 图2 重点…