算法题(2)力扣第n位数字
给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位上的数字。
class Solution {public int findNthDigit(int n) {// num表示具体的整数int num = 1;// count表示几位数int count = 1;// 9 * num * count 表示几位数总共有多少位数,比如,三位数从100~999,一共是 9 * 100 * 3 = 2700 位数while (n > 9 * (long) num * count) {// 从小到到依次减去一位数、两位数、三位数,直到减不了为止n -= 9 * num * count;// num此时记录的是几位数的第一个数,依次是1、10、100、1000num *= 10;// count表示几位数,每经过一轮加1,表示下一次判断的位数加1count++;}// 此时的 n 表示从 num 开始取第多少位// 比如,此时n=5,num=100,count=3,表示从100开始取第5位// 那么,100是三位,101是三位,所以,第5位肯定在101这个整数的第2位,也就是0// num += (n - 1) / count; 用来确定是哪个具体的整数了,这里 n-1 是为了防止边界情况,比如n=3,count=3,这时候会取超了// n -= (n - 1) / count * count; 用来确定是哪个具体的位,n=5-3=2,注意 4/3*3=3,不等于4// count-n,上面算出来的n是从高到低的第几位,通过 count-n 转成第低到高的第几位// (num / (int) Math.pow(10, count - n)) % 10; 取出那个位的数字// 确定是具体哪个整数num += (n - 1) / count;// 确定是这个整数中的哪个位n -= (n - 1) / count * count;// 取出那个位的数字return (num / (int) Math.pow(10, count - n)) % 10;}
}
算法题(2)力扣第n位数字相关推荐
- 面试看牛客,刷题看力扣?那我结合其二总结出的面试刷题手册何如?天下无敌也
程序员内部一直流传这一句话: 面试看牛客 刷题看力扣 牛客网作为国内最牛的程序员面试网站,一直在程序员内部颇负盛名,其中用户更是卧虎藏龙! 有国内一线大厂的企业招聘 还有一些低调的互联网大牛实力就和天 ...
- 力扣 有多少小于当前数字的数字
力扣 有多少小于当前数字的数字 题目描述 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j ...
- [Golang]力扣Leetcode - 374. 猜数字大小(二分查找)
[Golang]力扣Leetcode - 374. 猜数字大小(二分查找) 题目:猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我 ...
- 基本算法总结,力扣题目整理
系统性学习算法,扎实您的打码基本功! 作为算法初学者的我从19年8月份开始在力扣学习算法,到现在AC了700多道题目. 随着打卡题目数量的增多,我发现算法常见考察的知识点大概有十几种,包括:二分,滑动 ...
- 【算法竞赛】力扣杯春赛-个人赛 LCCUP‘23复盘
力扣杯春赛-个人赛 LCCUP'23 LCP 72. 补给马车 关键词:模拟 题目来源:LCP 72. 补给马车 - 力扣(Leetcode) 题目描述 T模拟 远征队即将开启未知的冒险之旅,不过在此 ...
- 力扣693.交替位二进制数
题目描述 给定一个正整数,检查它的二进制表示是否总是 0.1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同. 示例 1: 输入:n = 5 输出:true 解释:5 的二进制表示是:10 ...
- java 刷题ide,力扣(LeetCode)刷题神器之Vs Code
力扣(Leet Code)介绍 相信不少学习编程的人对 LeetCode 这个网站是相当之熟悉的,这是一个专供程序员们练习编程能力的网站,主要侧重于算法方面,想进入一线大厂必备技能没有之一. 作为一个 ...
- 刷题:力扣-LCS 01. 下载插件
小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载.假定每分钟选择以下两种策略之一: 使用当前带宽下载插件 将带宽加倍(下载插件数量随之加倍) 请返回小扣完 ...
- 力扣 338. 比特位计数
题目 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案. 示例 输入:n = 2 输 ...
最新文章
- A - 数据结构实验之查找一:二叉排序树
- SolrJ添加商品数据
- Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库...
- react中创建一个组件_如何使用React和MomentJS创建一个Countdown组件
- IE浏览器经典故障分析与实战解决方案
- 小知识·OTG工作原理
- 调用情迁机器人发送微信或者QQ消息等即时通讯消息
- GoodUP:智协云店通+BitCOO的4WiN全球互贸链 | 翼次元空间
- 不是python文件打开的合法模式组合是_以下选项中,不是Python文件打开的合法模式组合是:...
- Java并发编程模拟管程(霍尔Hoare管程、汉森Hansan管程、MESA管程)
- php 产生国际时间,php时间国际化和本地转换
- ruoyi前端启动报错./src/main.js Module build failed (from ./node_modules/eslint-loader/index.js):
- 蓝奏网盘带密码文件分享下载链接分析思路
- 微信小程序毕业设计 基于微信校园跑腿小程序系统开题报告
- 大数据 智能交通调度_当大数据邂逅智能交通
- 获取咕咚运动移动应用中的数据——Python实现
- 2019-01-25T01:30:00.000+0000 格式转换
- 解决QQ客服链接点开后不能进入添加好友或者聊天界面
- 三星Note2 SCH-N719刷机教程
- 外汇保证金交易理性的加仓方式