当前位置: 首页 > 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.…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...