当前位置: 首页 > news >正文

2376. 统计特殊整数

Powered by:NEFU AB-IN

Link

文章目录

  • 2376. 统计特殊整数
    • 题意
    • 思路
    • 代码

2376. 统计特殊整数

题意

如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。

给你一个 正 整数 n ,请你返回区间 [1, n] 之间特殊整数的数目。

思路

详见灵神视频
https://leetcode.cn/problems/count-special-integers/solutions/1746956/shu-wei-dp-mo-ban-by-endlesscheng-xtgx/

class Solution:def countSpecialNumbers(self, n: int) -> int:# 将整数 n 转换为字符串表示,方便逐位处理。s = str(n)@lru_cache(None)  # 使用缓存机制来避免重复计算,提高效率。def dfs(i, mask, is_limit, is_num):"""使用深度优先搜索(DFS)和动态规划计算特殊数字的数量。参数:i (int): 当前处理的位数(在字符串 s 中的索引)。mask (int): 位掩码,用于表示目前已经使用的数字。每个位代表一个数字,位被设置为1表示该数字已使用。集合和二进制的转换关系is_limit (bool): 表示前面填的数字是否都是 n 对应位上的,如果为 true,那么当前位至多为 int(s[i]),否则至多为 9is_num (bool): 表示当前是否已经形成了一个有效的数字(避免前导零)。返回值:int: 从当前状态开始的有效特殊数字的数量。"""# 基础情况:如果已经处理完所有位。if i == len(s):# 如果已经形成了一个有效的数字(is_num 为 True),返回 1;否则返回 0。return int(is_num)# 初始化当前状态下的结果。res = 0# 如果还没有形成有效数字,可以选择跳过当前位。if not is_num:# 递归处理下一位,不形成数字。res = dfs(i + 1, mask, False, False)# 确定当前位的上限。# 如果 is_limit 为 True,当前位的数字不能超过 s[i];# 否则,当前位可以是 0 到 9 之间的任意数字。up = int(s[i]) if is_limit else 9# 确定当前位的下限。# 如果已经形成了一个数字,当前位可以从 0 开始;# 否则,为了避免前导零,当前位只能从 1 开始。down = 0 if is_num else 1# 尝试当前位的所有可能数字。for d in range(down, up + 1):# 检查当前数字 d 是否已经使用过(即 mask 中相应的位是否已设置)。if not 1 << d & mask:# 递归处理下一位,更新位掩码和限制条件。res += dfs(i + 1, mask | 1 << d,  # 将当前数字 d 加入位掩码。is_limit and d == up,  # 如果 d 达到上限,更新 is_limit。True  # 现在已经形成了一个有效数字。)return res# 从第一位开始 DFS,位掩码为空,限制条件由 n 决定,尚未形成数字。return dfs(0, 0, True, False)

代码

'''
Author: NEFU AB-IN
Date: 2024-08-10 20:54:06
FilePath: \LeetCode\2376\2376.py
LastEditTime: 2024-08-12 23:45:19
'''
import random
# 3.8.19 import
from ast import Pass
from collections import Counter, defaultdict, deque
from datetime import datetime, timedelta
from functools import lru_cache, reduce
from heapq import heapify, heappop, heappush, nlargest, nsmallest
from itertools import combinations, compress, permutations, starmap, tee
from math import ceil, comb, fabs, floor, gcd, hypot, log, perm, sqrt
from string import ascii_lowercase, ascii_uppercase
from sys import exit, setrecursionlimit, stdin
from typing import Any, Callable, Dict, List, Optional, Tuple, TypeVar, Union# Constants
TYPE = TypeVar('TYPE')
N = int(2e5 + 10)
M = int(20)
INF = int(1e12)
OFFSET = int(100)
MOD = int(1e9 + 7)# Set recursion limit
setrecursionlimit(int(2e9))class Arr:array = staticmethod(lambda x=0, size=N: [x() if callable(x) else x for _ in range(size)])array2d = staticmethod(lambda x=0, rows=N, cols=M: [Arr.array(x, cols) for _ in range(rows)])graph = staticmethod(lambda size=N: [[] for _ in range(size)])class Math:max = staticmethod(lambda a, b: a if a > b else b)min = staticmethod(lambda a, b: a if a < b else b)class IO:input = staticmethod(lambda: stdin.readline().rstrip("\r\n"))read = staticmethod(lambda: map(int, IO.input().split()))read_list = staticmethod(lambda: list(IO.read()))class Std:pass# ————————————————————— Division line ——————————————————————class Solution:def countSpecialNumbers(self, n: int) -> int:s = str(n)@lru_cache(None)def dfs(i, mask, is_limit, is_num):if i == len(s):return int(is_num)res = 0if not is_num:res = dfs(i + 1, mask, False, False)up = int(s[i]) if is_limit else 9down = 0 if is_num else 1for d in range(down, up + 1):if not 1 << d & mask:res += dfs(i + 1, mask | 1 << d, is_limit and d == up, True)return resreturn dfs(0, 0, True, False)

相关文章:

2376. 统计特殊整数

Powered by:NEFU AB-IN Link 文章目录 2376. 统计特殊整数题意思路代码 2376. 统计特殊整数 题意 如果一个正整数每一个数位都是 互不相同 的&#xff0c;我们称它是 特殊整数 。 给你一个 正 整数 n &#xff0c;请你返回区间 [1, n] 之间特殊整数的数目。 思路 详见灵神…...

Python 绘图进阶之核密度估计图:掌握数据分布的秘密

Python 绘图进阶之核密度估计图&#xff1a;掌握数据分布的秘密 引言 在数据分析中&#xff0c;了解数据的分布情况是至关重要的一步。除了常用的直方图和箱线图&#xff0c;核密度估计图&#xff08;Kernel Density Estimation, KDE&#xff09;提供了一种更为平滑、直观的方…...

设计模式(1)创建型模式和结构型模式

1、目标 本文的主要目标是学习创建型模式和结构型模式&#xff0c;并分别代码实现每种设计模式 2、创建型模式 2.1 单例模式&#xff08;singleton&#xff09; 单例模式是创建一个对象保证只有这个类的唯一实例&#xff0c;单例模式分为饿汉式和懒汉式&#xff0c;饿汉式是…...

RuoYi-Vue新建模块

一、环境准备 附:RuoYi-Vue下载与运行 二、新建模块 在RuoYi-Vue下新建模块ruoyi-test。 三、父pom文件添加子模块 在RuoYi-Vue的pom.xml中,引入子模块。 <dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-test</artifactId>&…...

Element-UI自学实践

概述 Element-UI 是由饿了么前端团队推出的一款基于 Vue.js 2.0 的桌面端 UI 组件库。它为开发者提供了一套完整、易用、美观的组件解决方案&#xff0c;极大地提升了前端开发的效率和质量。本文为自学实践记录&#xff0c;详细内容见 &#x1f4da; ElementUI官网 1. 基础组…...

ChatGPT如何工作:创作一首诗的过程

疑问 怎样理解 Chat GPT 的工作原理&#xff1f;比如我让他作一首诗&#xff0c;他是如何创作的呢&#xff1f;每一行诗&#xff0c;每一个字都是怎么来的&#xff1f;随机拼凑的还是从哪里借鉴的&#xff1f; 回答 当你让 ChatGPT 创作一首诗时&#xff0c;它并不是简单地随…...

Linux_Shell变量及运算符-05

一、Shell基础 1.1 什么是shell Shell脚本语言是实现Linux/UNIX系统管理及自W动化运维所必备的重要工具&#xff0c; Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算…...

OpenCV图像滤波(13)均值迁移滤波函数pyrMeanShiftFiltering()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数执行均值迁移图像分割的初始步骤。 该函数实现了均值迁移分割的过滤阶段&#xff0c;即输出是经过滤波的“海报化”图像&#xff0c;其中颜色…...

用爬虫技术探索石墨文档:数据自动化处理与个性化应用的创新实践

用爬虫技术探索石墨文档&#xff1a;数据自动化处理与个性化应用的创新实践 在当今这个信息爆炸的时代&#xff0c;文档管理与协作成为了企业运营和个人工作中不可或缺的一部分。石墨文档&#xff0c;作为一款轻量级的云端Office套件&#xff0c;凭借其强大的在线协作、实时同…...

【JavaEE初阶】线程池

目录 &#x1f4d5; 引言 &#x1f333; 概念 &#x1f340;ThreadPoolExecutor 类 &#x1f6a9; int corePoolSize与int maximumPoolSize&#xff1a; &#x1f6a9; long keepAliveTime与TimeUnit nuit&#xff1a; &#x1f6a9; BlockingQueue workQueue&#xff1a…...

zdpgo_cobra_req 新增解析请求体内容

zdpgo_cobra_req 使用Go语言开发的&#xff0c;类似于curl的HTTP客户端请求工具&#xff0c;用于便捷的测试各种HTTP地址 特性 1、帮助文档都是中文的2、支持常见的HTTP请求&#xff0c;比如GET、POST、PUT、DELETE等 下载 git clone https://github.com/zhangdapeng520/z…...

Java聚合快递对接云洋系统快递小程序源码

&#x1f31f;【一键聚合&#xff0c;高效便捷】快递对接云洋系统小程序全攻略&#x1f680; 引言&#xff1a;告别繁琐&#xff0c;拥抱智能快递新时代&#x1f50d; 在这个快节奏的时代&#xff0c;每一分每一秒都弥足珍贵。你是否还在为手动输入多个快递单号、频繁切换不同…...

陕西西安培华学院计算机软件工程毕业设计课题选题参考目录​

陕西西安培华学院计算机软件工程毕业设计课题选题 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff0c;阿里云开发社区乘风者计划专家博主&#xff0c;CSDN平台&#xff0c;✌️Java领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者、专注于大学生项目实战开发…...

如何用sql在1分钟从1T数据中精准定位查询?Hive离线数仓 Spark分析

最近在一个群里&#xff0c;从群友哪里了解到这样一个业务需求&#xff1a;如何在 hdfs 1 T源数据库中&#xff0c;1分钟内从其中抓取自己想要的数据&#xff1f; 我的理解是 &#xff1a; 在hdfs数据库中为拥有 尽1T数据的表创建索引,并对其进行性能优化&#xff0c;以实现…...

acpi 主板布局需要 efi

今天在折腾 ESXI 的时候&#xff0c;启动虚拟机跳出了 acpi 主板布局需要 efi 然后我就将 ESXI 的启动方式改为了 EFI 但是虚拟机有莫名的启动不了&#xff0c;网上也没有找到办法&#xff0c;最后&#xff0c;我将虚拟机类型有原本的 ubuntu 换成了 debian 最后启动成功&…...

月之暗面对谈 Zilliz:长文本和 RAG 如何选择?

01 长文本与RAG通用对比 准确率&#xff1a;通常情况下长文本优于RAG 长文本&#xff1a;可更加综合的去分析所有相关的内容&#xff0c;提取相关数字&#xff0c;生成图表&#xff0c;效果尚可。RAG&#xff1a;更适合找到一段或者是几段可能相关的段落。如果希望大模型能够…...

高级java每日一道面试题-2024年8月12日-设计模式篇-请列举出在JDK中几个常用的设计模式?

如果有遗漏,评论区告诉我进行补充 面试官: 请列举出在JDK中几个常用的设计模式? 我回答: 在Java Development Kit (JDK) 中&#xff0c;许多设计模式被广泛使用&#xff0c;以帮助实现软件的结构、行为和复用。下面是一些在JDK中常见的设计模式及其简要说明&#xff1a; 工…...

mysql workbench8.0如何导出mysql5.7格式的sql定义

碰到的问题 mac上安装mysql workbech6.0后不能运行&#xff0c;但安装workbench8.0后&#xff0c;导出的数据库sql文件默认是msyql 8.0的语法和格式。比如生成索引的语句后面会有visible关键字&#xff0c;当把mysql8.0的sql文件导入到mysql5.7时就会报错。 如何解决 点击my…...

数据结构(学习)2024.8.6(顺序表)

今天开始学习数据结构的相关知识&#xff0c;大概分为了解数据结构、算法&#xff1b;学习线性表&#xff1a;顺序表、链表、栈、队列的相关知识和树&#xff1a;二叉树、遍历、创建&#xff0c;查询方法、排序方式等。 目录 一、数据结构 数据 逻辑结构 1.线性结构 2.树…...

MyBatis全解

目录 一&#xff0c; MyBatis 概述 1.1-介绍 MyBatis 的历史和发展 1.2-MyBatis 的特点和优势 1.3-MyBatis 与 JDBC 的对比 1.4-MyBatis 与其他 ORM 框架的对比 二&#xff0c; 快速入门 2.1-环境搭建 2.2-第一个 MyBatis 应用程序 2.3-配置文件详解 (mybatis-config.…...

小白程序员必收藏!Agent工程入门指南:轻松上手大模型,抓住AI时代红利

小白程序员必收藏&#xff01;Agent工程入门指南&#xff1a;轻松上手大模型&#xff0c;抓住AI时代红利 本文介绍了Agent工程的基础知识和大模型学习的核心逻辑&#xff0c;强调了从小白到掌握Agent和大模型的关键在于平衡AI的自主决策能力与流程规范。文章还提供了一份详细的…...

线性基——2026杭电春季联赛第三场1005月球异或

前言 本人蒟蒻&#xff0c;如有错误还请指出。 前不久刚学了线性基&#xff0c;结果就用上了。线性基yyds&#xff01; 没学过线性基的出门左拐 放一个之前写的线性基笔记 原题链接 题目大意 新定义三进制下的异或运算 。 再给你一个长度为 的数组&#xff0c;你可以…...

5分钟快速解锁QQ音乐加密文件:qmc-decoder终极使用指南

5分钟快速解锁QQ音乐加密文件&#xff1a;qmc-decoder终极使用指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经在QQ音乐下载了喜欢的歌曲&#xff0c;却发现…...

从Python入门到AI项目实战:以NLP-StructBERT部署为第一个完整案例

从Python入门到AI项目实战&#xff1a;以NLP-StructBERT部署为第一个完整案例 你是不是刚学Python&#xff0c;对着书本上的print(“Hello World”)感觉有点无聊&#xff1f;或者学了一堆语法&#xff0c;却不知道这些for循环、if判断到底能用来做什么实际的东西&#xff1f; …...

读2025世界前沿技术发展报告30海洋技术发展(下)

1. 强化无人及反无人作战能力建设1.1. 英美发布相关战略文件&#xff0c;顶层规划无人、反无人作战能力建设1.1.1. 《无人机战略》文件&#xff0c;分析无人系统对传统战争形态转变的影响1.1.2. 《反无人系统战略》1.1.2.1. ​包括设立联合反小型无人机系统办公室&#xff08;J…...

交通顶刊TR Part C 2026年5月论文导读(上)

一期刊简介Transportation Research Part C (TR-C): Emerging Technologies 是交通领域顶刊&#xff0c;由 Elsevier 出版&#xff0c;中科院与 JCR 均为 1 区&#xff0c;近年影响因子约8–9.6。该期刊以交通系统为核心&#xff0c;聚焦 AI、大数据、运筹学等新兴技术对交通规…...

群晖搭建PS4 HEN服务器 | 无需联网的本地化解决方案

1. 为什么需要本地化HEN服务器&#xff1f; 如果你是一位PS4玩家&#xff0c;可能对HEN&#xff08;Homebrew ENabler&#xff09;这个名词并不陌生。它能让你的PS4运行自制软件、备份游戏存档&#xff0c;甚至解锁一些官方系统限制的功能。但传统方式需要PS4联网访问外部HEN服…...

BilibiliDown新手入门指南:如何轻松下载B站视频资源

BilibiliDown新手入门指南&#xff1a;如何轻松下载B站视频资源 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/…...

Swift Core ML Stable Diffusion架构设计:打造高性能移动端AI绘画引擎

Swift Core ML Stable Diffusion架构设计&#xff1a;打造高性能移动端AI绘画引擎 【免费下载链接】swift-coreml-diffusers Swift app demonstrating Core ML Stable Diffusion 项目地址: https://gitcode.com/gh_mirrors/sw/swift-coreml-diffusers 想要在iPhone和Mac…...

千问3.5-27B保姆级教程:从实例ID获取https访问地址的完整流程

千问3.5-27B保姆级教程&#xff1a;从实例ID获取https访问地址的完整流程 1. 前言&#xff1a;认识Qwen3.5-27B模型 Qwen3.5-27B是Qwen官方发布的视觉多模态理解模型&#xff0c;它不仅能够进行文本对话&#xff0c;还能理解图片内容。这个模型已经在4张RTX 4090 D 24GB显卡的…...