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

【力扣】2376. 统计特殊整数

如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。
给你一个 正 整数 n ,请你返回区间 [1, n] 之间特殊整数的数目。
示例 1:
输入:n = 20
输出:19
解释:1 到 20 之间所有整数除了 11 以外都是特殊整数。所以总共有 19 个特殊整数。

示例 2:
输入:n = 5
输出:5
解释:1 到 5 所有整数都是特殊整数。

示例 3:
输入:n = 135
输出:110
解释:从 1 到 135 总共有 110 个整数是特殊整数。
不特殊的部分数字为:22 ,114 和 131 。

public class SpecialNumberCounter {  public static int countSpecialNumbers(int n) {  if (n < 1) return 0;  int count = 0;  int length = (int) Math.log10(n) + 1; // 获取 n 的位数  // 从 1 到 length-1 位数的情况  for (int i = 1; i < length; i++) {  count += countSpecialNumbersWithFixedLength(i, 9); // 每一位的数字可以是 1-9 中的任意一个  }  // 处理长度为 length 的数  int[] usedDigits = new int[10]; // 用于标记哪些数字已被使用  for (int i = 1; i <= n; i *= 10) {  int currentDigit = n / i % 10; // 获取当前位的数字  if (currentDigit == 0) {  // 如果当前位是 0,则不能包含 0 作为特殊整数的最高位  // 但我们已经在前面的循环中处理了所有不包含 0 作为最高位的情况  // 所以这里直接跳过,不需要做任何处理  continue;  }  // 从当前位开始,生成所有可能的特殊整数  count += generateSpecialNumbers(n, i, currentDigit, usedDigits);  // 如果当前位小于 n 的对应位,那么可以包含从 0 到 currentDigit-1 的所有数字作为下一位的开头  // 但因为我们要的是互不相同的数位,所以实际上不能包含已经使用过的数字  // 但由于我们是从高位到低位遍历,所以这里不需要显式处理  // 标记当前位已经使用  usedDigits[currentDigit] = 1;  // 如果某一位是 0 并且不是最高位,那么后面的位可以自由选择(因为我们已经处理过最高位不为 0 的情况)  // 但由于我们是按位遍历的,所以这种情况会在下一轮循环中自动处理  }  return count;  }  // 生成长度为 length,且以 firstDigit 开头的特殊整数数量(不超过 max)  private static int generateSpecialNumbers(int max, int base, int firstDigit, int[] usedDigits) {  if (max < base) return 0; // 如果 max 已经小于当前位的 base,则无法生成更多的特殊整数  int count = 0;  usedDigits[firstDigit] = 1; // 标记 firstDigit 已被使用  // 从 firstDigit+1 开始,选择剩余的数位  for (int i = firstDigit + 1; i < 10; i++) {  if (usedDigits[i] == 0) { // 如果 i 没有被使用过  int remaining = max % base / (base / 10); // 剩余需要匹配的数位(不包括当前位)  if (remaining >= i) { // 如果剩余数位可以包含 i  count += generateSpecialNumbers(max, base / 10, i, usedDigits) + 1; // +1 表示当前这个数本身  }  }  }  usedDigits[firstDigit] = 0; // 恢复 usedDigits 数组  // 加上不以任何数字开头的特殊整数(即只有 firstDigit 的情况)  if (max >= base * firstDigit) {  count++;  }  return count;  }  // 计算固定长度的特殊整数数量(不包含前导零)  private static int countSpecialNumbersWithFixedLength(int length, int maxDigit) {  int count = 9; // 第一位不能为 0,所以有 9 种选择  for (int i = 1; i < length; i++) {  count *= maxDigit - i; // 后续每一位都有 maxDigit - i 种选择(因为已经选择了 i 个数字)  }  return count;  }  public static void main(String[] args) {  int n = 20;  System.out.println(countSpecialNumbers(n)); // 输出: 11  n = 1000;  System.out.println(countSpecialNumbers(n)); // 输出一个更大的范围内的特殊整数数量  }  
}

注意:上面的代码可能并不是最优解,并且包含了一些简化和假设(比如没有显式处理最高位为 0 的情况,因为题目通常意味着特殊整数是正整数,且没有前导零)。此外,generateSpecialNumbers 方法可能不是最高效的实现,因为它在递归过程中重复计算了一些情况。一个更优化的实现可能会使用动态规划或记忆化搜索来避免重复计算。

然而,这个实现应该能够给出正确的答案,并且对于不是特别大的 n 来说,性能是可以接受的。对于非常大的 n,我们可能需要进一步优化算法或使用更高效的数据结构。

相关文章:

【力扣】2376. 统计特殊整数

如果一个正整数每一个数位都是 互不相同 的&#xff0c;我们称它是 特殊整数 。 给你一个 正 整数 n &#xff0c;请你返回区间 [1, n] 之间特殊整数的数目。 示例 1&#xff1a; 输入&#xff1a;n 20 输出&#xff1a;19 解释&#xff1a;1 到 20 之间所有整数除了 11 以外都…...

MySQL面试题——第一篇

1. 一张自增表里面总共有7条数据&#xff0c;删除了最后2条数据&#xff0c;重启数据库后又插入了一条数据&#xff0c;此时ID是几 表类型如果是MyISAM&#xff0c;那么id就是8 如果是InnoDB&#xff0c;那就是6 InnoDB表只会把自增主键的最大id记录在内存中&#xff0c;所以重…...

零停机部署的“秘密武器”:为什么 Kamal Proxy 能成为你架构中的不二之选?

你是不是也遇到过这种场景:网站正在升级,用户却被迫刷新无数次页面?服务器切换时瞬间掉线,客户体验差得没话说。更糟糕的是,流量高峰期来临时,正是业务最重要的时刻,结果因为停机而损失惨重。这个时候你一定会想:难道没有一种方式,能在不打断服务的情况下,平滑地进行…...

轻量级RSS阅读器Fusion

什么是 Fusion &#xff1f; Fusion 是一款轻量级、自托管的 RSS 聚合器和阅读器。 软件主要特点&#xff1a; 自动分组、书签、搜索、嗅探信息导入/导出 OPML 文件支持 RSS、Atom、JSON 类型的 feed响应式、明/暗模式、PWA轻量级&#xff0c;自托管友好 使用 Golang 和 SQLit…...

Kubernetes从零到精通(11-CNI网络插件)

Kubernetes网络模型 Kubernetes的网络模型&#xff08;Kubernetes Networking Model&#xff09;旨在提供跨所有节点、Pod和服务的统一网络连接。它的核心理念是通过统一的网络通信规则&#xff0c;保证集群中的所有组件能够顺畅地相互通信。Kubernetes网络模型主要有以下几个关…...

【手机马达共振导致后主摄马达声音异常】

手机马达共振导致后主摄马达声音异常 问题根因解决方案其他易混淆 问题根因 当手机马达的震动频率和摄像头AF马达的一二阶震动频率处于共振频段的时候&#xff0c;手机马达震动时候有很大概率会干扰到后置摄像头的对焦马达正常工作&#xff0c;可能出现的影响有出现滋滋杂音&a…...

AUTOSAR UDS NRC

UDS NRC NRC 含义如表格所示 NRC代码描述含义0x00Ok没有错误,请求已成功执行0x01~0x0FISOSAEReservedISO 保留,暂时未定义0x10General reject服务请求被拒绝,原因不明确0x11Service not supported请求的服务不被支持0x12Sub-function not supported请求的子功能不被支持0x13…...

[数据结构]无头单向非循环链表的实现与应用

文章目录 一、引言二、线性表的基本概念1、线性表是什么2、链表与顺序表的区别3、无头单向非循环链表 三、无头单向非循环链表的实现1、结构体定义2、初始化3、销毁4、显示5、增删查改 四、分析无头单向非循环链表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引…...

认识结构体

目录 一.结构体类型的声明 1.结构的声明 2.定义结构体变量 3.结构体变量初始化 4.结构体的特殊声明 二.结构体对齐(重点难点) 1.结构体对齐规则 2.结构体对齐练习 (一)简单结构体对齐 (二)嵌套结构体对齐 3.为什么存在内存对齐 4.修改默认对齐数 三.结构体传参 1…...

Linux驱动.之MT7601,USB-WiFi网卡移植到X210开发板,wpa_supplicant配置工具的使用(一)

一、移植前 1、下载与解压无线网卡MT7601U驱动源码压缩包 DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 解压后有如下文件 ate common iwpriv_usage.txt Makefile mgmt phy README_STA_usb RT2870STA.dat sta_ate_iwpriv_usage.txt chips include m…...

ChatGPT 在国内使用的方法

AI如今很强大&#xff0c;聊聊天、写论文、搞翻译、写代码、写文案、审合同等等&#xff0c;ChatGPT 真是无所不能~ 作为一款出色的大语言模型&#xff0c;ChatGPT 实现了人类般的对话交流&#xff0c;最主要是能根据上下文进行互动。 接下来&#xff0c;我将介绍 ChatGPT 在国…...

思通数科开源产品:免费的AI视频监控卫士安装指南

准备运行环境&#xff1a; 确保您的服务器或计算机安装了Ubuntu 18.04 LTS操作系统。 按照产品要求&#xff0c;安装以下软件&#xff1a; - Python 3.9 - Java JDK 1.8 - MySQL 5.5 - Redis 2.7 - Elasticsearch 8.14 - FFmpeg 4.1.1 - RabbitMQ 3.13.2 - Minio &#xff08;…...

阿里HPN-用于大型语言模型训练的数据中心网络

阿里巴巴HPN:用于大型语言模型训练的数据中心网络 探索大规模语言模型训练新方法&#xff1a;阿里巴巴HPN数据中心网络论文。 摘要 本文介绍了阿里云用于大型语言模型(LLM)训练的数据中心网络HPN。由于LLM和一般云计算之间的差异(例如&#xff0c;在流量模式和容错性方面)&…...

re题(27)BUUFCTF-[MRCTF2020]Transform

BUUCTF在线评测 (buuoj.cn) 先到ida&#xff0c;先看一下字符串 找到主函数 int __cdecl main(int argc, const char **argv, const char **envp) {char Str[104]; // [rsp20h] [rbp-70h] BYREFint j; // [rsp88h] [rbp-8h]int i; // [rsp8Ch] [rbp-4h]sub_402230(argc, argv…...

偶数、奇数、整数与指数

引言 在前面的课程中&#xff0c;我们已经学习了 Python 的基本输入输出、数据类型及其转换、顺序结构、分支结构、循环结构、循环控制语句、字符串类型、列表类型、元组类型、字典类型、集合类型、函数的定义与使用、函数调用与作用域、函数的高级应用、质数、倍数与余数。本课…...

关于c#中异步async和await的理解

之前给大家介绍了所谓异步编程的用法&#xff0c;但是没有细致的理解到&#xff0c;今天想和大家一起探讨一下; 前文&#xff1a; C#笔记14 异步编程Async&#xff0c;await&#xff0c;task类-CSDN博客 异步的起初 应用程序会启动一个进程&#xff0c;一个进程可以有很多…...

mysql等保数据库命令

mysql数据库命令 默认安装位置&#xff1a;C:\Program Files\MySQL\MySQL Server 8.0\bin select version() from dual; desc mysql.user; 查看表中有哪些列 1、SELECT user, host, authentication_string, account_locked ,password_lifetime FROM mysql.user; 查询用户表…...

云平台在大规模设备管理和数据分析中的作用

在当代数字化转型的浪潮中&#xff0c;云平台作为信息技术基础设施的核心组件&#xff0c;扮演着无可替代的角色&#xff0c;尤其在大规模设备管理和数据分析领域&#xff0c;其重要性和影响力日益凸显。本文旨在深入探讨云平台如何通过其独特的优势&#xff0c;促进数据的高效…...

数据结构-树和二叉树

树 和 二叉树 1.树的概念 树 tree 是n(n>0)个节点的有限集 在任意的一个非空树中 (1)有且仅有一个特定的被称为 根(root) 的节点 (2)当n>1时, 其余的节点可分为m(m>0)个互不相交的有限集T1, T2, T3, .... …...

树和二叉树的概念以及结构

一起加油学数据结构 目录 树的概念以及结构 树的概念 树的相关概念 树的表示 二叉树的概念以及结构 二叉树的概念 特殊的二叉树 二叉树的性质 二叉树的存储结构 树的概念以及结构 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...