题目

https://leetcode.com/problems/nth-digit/

题解

本题考察 Math, Binary Search。思路不难,需要扣边界细节。

class Solution {public int findNthDigit(int n) {// [1,n] 二分找左侧不大于n的第一个数int L = 1;int R = n;int nearLeft = -1;int count;while (L <= R) {int M = L + ((R - L) >> 1);count = countDigit(M);if (count <= n - 1) {nearLeft = M;L = M + 1;} else {R = M - 1;}}return String.valueOf(nearLeft).charAt(n - countDigit(nearLeft) - 1) - '0';}public int countDigit(int n) {int count = 0;int multi = 1;while (n / Math.pow(10, multi) > 1) {count += (9 * Math.pow(10, multi - 1) * multi);multi++;}count += ((n - Math.pow(10, multi - 1)) * multi);return count;}
}

二分找左侧不大于 n 的第一个数:

    public int binSearch(ArrayList<Integer> list, int target) {int left = 0, right = list.size() - 1;while (left <= right) {int mid = (left + right) / 2;if (list.get(mid) == target)return mid;if (list.get(mid) > target)right = mid - 1;elseleft = mid + 1;}return right;}

leetcode 400. Nth Digit | 400. 第 N 位数字(二分法找左侧不大于n的第一个数)相关推荐

  1. 第N位数字[学会找规律,发现类似通项公式的捷径]

    发现规律+问题拆分 前言 一.第N位数字 二.发现规律+问题拆分 总结 参考文献 前言 找规律属于看问题的一种,也是算法的一种考察角度.通过第N位数字打开找规律的思路,享受类通项公式的迅速求值.除此之 ...

  2. [LeetCode]400. Nth Digit

    /*思路很简单 没有很特别的方法1.先找到要找的数是几位数2.再找到要找的数是那个数中的3.最后在上一步的数中找到结果*/public int findNthDigit(int n) {//几位数lo ...

  3. leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)

    题目 https://leetcode.com/problems/find-peak-element/ 题解 2021-7-21 16:28:31 更新版思路: 根据左神在 课上 说的,可以使用二分法 ...

  4. LeetCode算法题-Nth Digit(Java实现)

    这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...

  5. C#LeetCode刷题之#400-第N个数字(Nth Digit)

    问题 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字. 注意:n 是正数且在32为整形范围内 ( n < 231). 输入:3 ...

  6. 400. 第 N 位数字

    400. 第 N 位数字 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -中找到第 n 位数字. 注意:n 是正数且在 32 位整数范围内(n < 23 ...

  7. 【LeetCode】﹝数学规律ி﹞第N位数字、可怜的小猪

    [LeetCode]﹝数学规律ி﹞第N位数字.可怜的小猪 文章目录 [LeetCode]﹝数学规律ி﹞第N位数字.可怜的小猪 乐团站位★ 罗马数字转整数★ 整数转罗马数字★★ 第 N 位数字★★ 数字 ...

  8. LeetCode移掉k位数字(贪心算法)python

    描述 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. num的长度小于10002,且将≥k.给定的num不包含任何前导零. 您在真实的面试中是否遇到过这个题? ...

  9. LeetCode 402. 移掉K位数字(贪心,单调栈)

    1. 题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : ...

最新文章

  1. 解决getOutputStream() has already been called for this response[java io流]
  2. 213. House Robber II
  3. axios代理跨域 cli4_跨域本质及解决办法
  4. 学php要懂js吗,js要怎么学
  5. (1)webpack介绍
  6. Centos Nginx+PHP Install 史上最完美
  7. 手机微信如何设置浏览器打开时提醒
  8. 计算机软件产品类退税,软件产品增值税退税政策详解.doc
  9. Ubuntu20.04 Clion/Pycharm/IDEA 输入中文+光标跟随解决方案
  10. LINUX查看IP 网关 DNS
  11. MindMap学习使用
  12. ASA防火墙配置清除
  13. 年轻人不再去菜市场,互联网如何拯救菜场摊贩?
  14. 通过大数据来卸载清理电脑垃圾的软件,到底有多牛?Revo Uninstaller Pro 中文官方网站正版特惠
  15. Scratch软件编程等级考试三级——20191221
  16. PS怎么制作下雨天玻璃水雾图片效果
  17. Linux服务器卡顿如何排查
  18. Linux环境下安装Redis(保姆级教程)
  19. ES6看这一篇就够了
  20. Ionic Capacitor 插件开发

热门文章

  1. 牛客多校10 - Decrement on the Tree(边权转点权+思维)
  2. MATLAB优化问题
  3. HDU - 6153 A Secret(KMP的next数组性质/扩展KMP)
  4. windows server 2016安装oracle 10_Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)
  5. PyTorch-运算加速
  6. c语言骑士游历优化算法,骑士游历、骑士巡游(C语言)课程设计.doc
  7. Vue实现Todo List
  8. 什么代码才是线程安全的
  9. 第42讲:scrapy框架的基本使用
  10. 面试官:GET和POST两种基本请求方法有什么区别