leetcode400第N位数字

代码 

class Solution {public int findNthDigit(int n) {int base = 1;//位数int weight = 9;//权重while(n>(long)base*weight){//300n-=base*weight;base++;weight*=10;}//n=111 base=3 weight=900;n--;int res = (int)Math.pow(10,base-1)+n/base;int index = n%base;return String.valueOf(res).charAt(index)-'0';}
}

思路(包懂嘟因为mikey都懂)

1. 确定 nnn 所在的位数段
  • 初始化

    • base = 1 表示当前数字段的位数(从 1 开始)。
    • weight = 9 表示当前段所有数字占用的总位数。
  • 循环条件n > base * weight

    • nnn 比当前段所占的总位数大,说明 nnn 不在当前位数段。
    • 减去当前段的总位数后,继续检查下一段。
  • 更新规则

    • 减去当前段的总位数:n -= base * weight
    • 位数加 1:base++
    • 更新权重:weight *= 10(下一段的数字数量增加了 10 倍)。

示例:当 n=300时,

  • 初始:base = 1, weight = 9,剩余 n=300−9=291。
  • 更新:base = 2, weight = 90,剩余 n=291−180=111。
  • 更新:base = 3, weight = 900,此时 n=111,不再减去。

此时可以确定,n 位于 3 位数段(100 ~ 999)。


2. 定位到具体数字

在确定 nnn 位于当前位数段后:

  • 进行 n-- 操作,将索引调整为从 0 开始
    • 这是因为自然序列是从 1 开始,而数字的位是从 0 开始计数的。
  • 使用公式确定数字:
    • res = (int)Math.pow(10, base-1) + n / base
      • Math.pow(10, base-1)表示当前段的起始数字。
      • n/base表示 n超出当前段起始的完整数字个数。
      • 两者之和 res 就是目标数字。

示例:当 n=111且 base=3时:

  • 进行 n--,得到 n=110。
  • res = 100 + 110 / 3 = 100 + 36 = 136

3. 提取数字中的具体位

最后一步是从计算得到的数字中提取 nnn 对应的位:

  • index = n % base 计算数字中的具体位索引。
  • 转换为字符串,提取对应字符:String.valueOf(res).charAt(index) - '0'

示例:数字 136,索引 n=110,

  • index=110%3=2。
  • 对应数字 136 的第 2 位是 6。

因此返回结果 6。

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

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

相关文章

Docker中的一些常用命令

find / -type f -name “文件名” 2>/dev/null 寻找所有目录中的这个文件 pwd 查看当前目录的地址 docker pull 镜像名 强制拉镜像 docker run 运行docker systemctl daemon-reload 关闭docker systemctl start docker 启动docker systemctl restart docker 重启docker /…

Redis环境部署(主从模式、哨兵模式、集群模式)

一、概述 REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库…

sql数据库-权限控制-DCL

目录 常用权限类别 查询用户权限 举例 授予用户权限 删除权限 常用权限类别 权限说明ALL,ALL PRIVILEGES所有权限SELECT查询数据INSERT插入数据UPDATE修改数据DELETE删除数据ALTER修改表DROP删除数据库/表/视图CREATE创建数据库/表 查询用户权限 show grants for 用户名…

如何创建你的第一个 Telegram 机器人:一步步教程

Telegram 是一款全球广受欢迎的即时通讯软件,其开放的 API 使得开发机器人变得非常简单。无论你是开发新手还是经验丰富的工程师,都可以在短时间内创建一个功能强大的 Telegram 机器人。这篇文章将带你从零开始创建属于你的第一个机器人。 1. 什么是 Te…

Linux进阶:常用操作

systemctl: 控制系统服务的启动、关闭 系统内置服务均可被systemctl控制第三方软件,如果自动注册了可以被systemctl控制第三方软件,如果没有自动注册,可以手动注册 语法:systemctl start | stop | restart | disable…

从源头保障电力安全:输电线路动态增容与温度监测技术详解

在电力系统中,输电线路是电能传输的关键环节。然而,当导线温度过高时,会加速导线老化,降低绝缘性能,甚至引发短路、火灾等严重事故,对电网安全运行构成巨大威胁。近日,某地区因持续高温和用电负…

vue2动态导出多级表头表格

需求:导出多级表格,如下,每个人名对应的是不同的城市金钱和年龄,日期占俩行,需要根据数据进行动态展示 1.效果 2.关键代码讲解 2.1数据源 2.2所需插件 npm install xlsx 2.3关键代码 创建name组和date组&#xff0c…

蓝桥杯每日真题 - 第16天

题目:(卡牌) 题目描述(13届 C&C B组C题) 解题思路: 题目分析: 有 n 种卡牌,每种卡牌的现有数量为 a[i],所需的最大数量为 b[i],还有 m 张空白卡牌。 每…

【c++笔试强训】(第十三篇)

目录 添加逗号(模拟) 题目解析 讲解算法原理 编写代码 跳台阶(动态规划) 题目解析 讲解算法原理 编写代码 添加逗号(模拟) 题目解析 1.题目链接:添加逗号_牛客题霸_牛客网 2.题目描述…

在Unity中使用Epplus写Excel

Overview 本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用. 官方的一个Demo: https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp 如果你只有读的需求,可以…

Python爬虫下载新闻,Flask展现新闻(2)

上篇讲了用Python从新闻网站上下载新闻,本篇讲用Flask展现新闻。关于Flask安装网上好多教程,不赘述。下面主要讲 HTML-Flask-数据 的关系。 简洁版 如图,页面简单,主要显示新闻标题。 分页,使用最简单的分页技术&…

layui 表格点击编辑感觉很好用,实现方法如下

1. 在 HTML 页面中引入 layui 的相关资源文件&#xff1a;html <link rel"stylesheet" href"https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> <script src"https://cdn.staticfile.org/layui/2.5.6/layui.js"></script&…

vscode 执行 vue 命令无效/禁止运行

在cmd使用命令可以创建vue项目但是在vscode上面使用命令却不行 一、问题描述 在 cmd 中已确认vue、node、npm命令可以识别运行&#xff0c;但是在 vscode 编辑器中 vue 命令被禁止&#xff0c;详细报错为&#xff1a;vue : 无法加载文件 D:\Software\nodejs\node_global\vue.…

Centos7安装Jenkins脚本一键部署

公司原先Jenkins二进制安装&#xff0c;自己闲来无事在测试主机优化了一下&#xff0c;一键部署&#xff0c;jenkins2.426版本jdk11版本 #!/bin/bashjenkins_file"jenkins-2.426.3-1.1.noarch.rpm"# 更新软件包列表 echo "更新软件包列表..." sudo yum up…

基于AIRTEST和Jmeter、Postman的自动化测试框架

基于目前项目和团队技术升级&#xff0c;采用了UI自动化和接口自动化联动数据&#xff0c;进行相关测试活动&#xff0c;获得更好的测试质量和测试结果。

FFMPEG录像推流时遇到的问题

FFMPEG录像推流时遇到的问题&#xff0c;记录一下供大参考 1. ret avformat_write_header( ofmt_ctx, NULL ); 执行写入头后&#xff0c;所有的流的时间基都会被内部重新设置&#xff0c;所以并不你想象的把原来的时间直接入到avPACKET中就可以发送了。必须要把你每个流的P…

QT基础 UI编辑器 QT5.12.3环境 C++环境

一、UI编辑器 注意&#xff1a;创建工程时&#xff0c;要勾上界面按钮 UI设计师界面的模块 UI编辑器会在项目构建目录中自动生成一个ui_xxx.h&#xff08;构建一次才能生成代码&#xff09;&#xff0c;来表示ui编辑器界面的代码&#xff0c;属于自动生成的&#xff0c;一定不…

关于win11电脑连接wifi的同时,开启热点供其它设备连接

背景&#xff1a; 我想要捕获手机流量&#xff0c;需要让手机连接上电脑的热点。那么问题来了&#xff0c;我是笔记本电脑&#xff0c;只能连接wifi上网&#xff0c;此时我的笔记本电脑还能开启热点供手机连接吗&#xff1f;可以。 上述内容&#xff0c;涉及到3台设备&#x…

题解 洛谷 Luogu P2440 木材加工 二分答案 C/C++

题目传送门&#xff1a; P2440 木材加工 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P2440思路 很简单的二分答案 每次找区间中点 m&#xff0c;判断每段长度为 m 时木头段总数是否 > k 即可 有两个细节需要注意一下 1.left 初始值应为 1 而非 0&…

恒利联创携手Pearson VUE 亮相第62届高博会

2024年11月15日-17日&#xff0c;第62届中国高等教育博览会&#xff08;简称“高博会”&#xff09;在重庆举行&#xff0c;恒利联创携手全球领先的考试服务提供商Pearson Vue Certiport共同亮相&#xff0c;为中国院校展现并提供数字化职业技能的教育平台及学练考体系。 作为P…