给你一个整数 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位数字相关推荐

  1. 面试看牛客,刷题看力扣?那我结合其二总结出的面试刷题手册何如?天下无敌也

    程序员内部一直流传这一句话: 面试看牛客 刷题看力扣 牛客网作为国内最牛的程序员面试网站,一直在程序员内部颇负盛名,其中用户更是卧虎藏龙! 有国内一线大厂的企业招聘 还有一些低调的互联网大牛实力就和天 ...

  2. 力扣 有多少小于当前数字的数字

    力扣 有多少小于当前数字的数字 题目描述 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j ...

  3. [Golang]力扣Leetcode - 374. 猜数字大小(二分查找)

    [Golang]力扣Leetcode - 374. 猜数字大小(二分查找) 题目:猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我 ...

  4. 基本算法总结,力扣题目整理

    系统性学习算法,扎实您的打码基本功! 作为算法初学者的我从19年8月份开始在力扣学习算法,到现在AC了700多道题目. 随着打卡题目数量的增多,我发现算法常见考察的知识点大概有十几种,包括:二分,滑动 ...

  5. 【算法竞赛】力扣杯春赛-个人赛 LCCUP‘23复盘

    力扣杯春赛-个人赛 LCCUP'23 LCP 72. 补给马车 关键词:模拟 题目来源:LCP 72. 补给马车 - 力扣(Leetcode) 题目描述 T模拟 远征队即将开启未知的冒险之旅,不过在此 ...

  6. 力扣693.交替位二进制数

    题目描述 给定一个正整数,检查它的二进制表示是否总是 0.1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同. 示例 1: 输入:n = 5 输出:true 解释:5 的二进制表示是:10 ...

  7. java 刷题ide,力扣(LeetCode)刷题神器之Vs Code

    力扣(Leet Code)介绍 相信不少学习编程的人对 LeetCode 这个网站是相当之熟悉的,这是一个专供程序员们练习编程能力的网站,主要侧重于算法方面,想进入一线大厂必备技能没有之一. 作为一个 ...

  8. 刷题:力扣-LCS 01. 下载插件

    小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载.假定每分钟选择以下两种策略之一: 使用当前带宽下载插件 将带宽加倍(下载插件数量随之加倍) 请返回小扣完 ...

  9. 力扣 338. 比特位计数

    题目 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案. 示例 输入:n = 2 输 ...

最新文章

  1. A - 数据结构实验之查找一:二叉排序树
  2. SolrJ添加商品数据
  3. Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库...
  4. react中创建一个组件_如何使用React和MomentJS创建一个Countdown组件
  5. IE浏览器经典故障分析与实战解决方案
  6. 小知识·OTG工作原理
  7. 调用情迁机器人发送微信或者QQ消息等即时通讯消息
  8. GoodUP:智协云店通+BitCOO的4WiN全球互贸链 | 翼次元空间
  9. 不是python文件打开的合法模式组合是_以下选项中,不是Python文件打开的合法模式组合是:...
  10. Java并发编程模拟管程(霍尔Hoare管程、汉森Hansan管程、MESA管程)
  11. php 产生国际时间,php时间国际化和本地转换
  12. ruoyi前端启动报错./src/main.js Module build failed (from ./node_modules/eslint-loader/index.js):
  13. 蓝奏网盘带密码文件分享下载链接分析思路
  14. 微信小程序毕业设计 基于微信校园跑腿小程序系统开题报告
  15. 大数据 智能交通调度_当大数据邂逅智能交通
  16. 获取咕咚运动移动应用中的数据——Python实现
  17. 2019-01-25T01:30:00.000+0000 格式转换
  18. 解决QQ客服链接点开后不能进入添加好友或者聊天界面
  19. 三星Note2 SCH-N719刷机教程
  20. 外汇保证金交易理性的加仓方式

热门文章

  1. 详解windows10安装失败怎么办
  2. 软件测试人员必备思维,软件测试人员的思维
  3. javascript关于累加和的发散思维
  4. [数据科学]000.我为什么当数据科学家
  5. 如何利用手机访问电脑本地的localhost?
  6. 大数据处理技术之数据集成
  7. android ems具体意义?
  8. 威海北洋电气java面试题_面试题_76_to_81_Java 最佳实践的面试问题
  9. 北洋 BTP-R380 打印机驱动
  10. 六轴机器人光机_四轴机器人与六轴机器人有什么区别?