leetcode 400. Nth Digit | 400. 第 N 位数字(二分法找左侧不大于n的第一个数)
题目
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的第一个数)相关推荐
- 第N位数字[学会找规律,发现类似通项公式的捷径]
发现规律+问题拆分 前言 一.第N位数字 二.发现规律+问题拆分 总结 参考文献 前言 找规律属于看问题的一种,也是算法的一种考察角度.通过第N位数字打开找规律的思路,享受类通项公式的迅速求值.除此之 ...
- [LeetCode]400. Nth Digit
/*思路很简单 没有很特别的方法1.先找到要找的数是几位数2.再找到要找的数是那个数中的3.最后在上一步的数中找到结果*/public int findNthDigit(int n) {//几位数lo ...
- leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)
题目 https://leetcode.com/problems/find-peak-element/ 题解 2021-7-21 16:28:31 更新版思路: 根据左神在 课上 说的,可以使用二分法 ...
- LeetCode算法题-Nth Digit(Java实现)
这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...
- C#LeetCode刷题之#400-第N个数字(Nth Digit)
问题 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字. 注意:n 是正数且在32为整形范围内 ( n < 231). 输入:3 ...
- 400. 第 N 位数字
400. 第 N 位数字 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -中找到第 n 位数字. 注意:n 是正数且在 32 位整数范围内(n < 23 ...
- 【LeetCode】﹝数学规律ி﹞第N位数字、可怜的小猪
[LeetCode]﹝数学规律ி﹞第N位数字.可怜的小猪 文章目录 [LeetCode]﹝数学规律ி﹞第N位数字.可怜的小猪 乐团站位★ 罗马数字转整数★ 整数转罗马数字★★ 第 N 位数字★★ 数字 ...
- LeetCode移掉k位数字(贪心算法)python
描述 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. num的长度小于10002,且将≥k.给定的num不包含任何前导零. 您在真实的面试中是否遇到过这个题? ...
- LeetCode 402. 移掉K位数字(贪心,单调栈)
1. 题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : ...
最新文章
- 解决getOutputStream() has already been called for this response[java io流]
- 213. House Robber II
- axios代理跨域 cli4_跨域本质及解决办法
- 学php要懂js吗,js要怎么学
- (1)webpack介绍
- Centos Nginx+PHP Install 史上最完美
- 手机微信如何设置浏览器打开时提醒
- 计算机软件产品类退税,软件产品增值税退税政策详解.doc
- Ubuntu20.04 Clion/Pycharm/IDEA 输入中文+光标跟随解决方案
- LINUX查看IP 网关 DNS
- MindMap学习使用
- ASA防火墙配置清除
- 年轻人不再去菜市场,互联网如何拯救菜场摊贩?
- 通过大数据来卸载清理电脑垃圾的软件,到底有多牛?Revo Uninstaller Pro 中文官方网站正版特惠
- Scratch软件编程等级考试三级——20191221
- PS怎么制作下雨天玻璃水雾图片效果
- Linux服务器卡顿如何排查
- Linux环境下安装Redis(保姆级教程)
- ES6看这一篇就够了
- Ionic Capacitor 插件开发
热门文章
- 牛客多校10 - Decrement on the Tree(边权转点权+思维)
- MATLAB优化问题
- HDU - 6153 A Secret(KMP的next数组性质/扩展KMP)
- windows server 2016安装oracle 10_Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)
- PyTorch-运算加速
- c语言骑士游历优化算法,骑士游历、骑士巡游(C语言)课程设计.doc
- Vue实现Todo List
- 什么代码才是线程安全的
- 第42讲:scrapy框架的基本使用
- 面试官:GET和POST两种基本请求方法有什么区别