Leetcode 440.字典序第k小的数字
2024-10-21 07:38:38
字典序第k小的数字
给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。
注意:1 ≤ k ≤ n ≤ 109。
示例 :
输入:
n: 13 k: 2
输出:
10
解释:
字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。
思路
十叉树,比如10 ~ 20在这一层有10个数,如果20小于n,那么再找第三层100 ~ 200,每层step就min(n + 1, n2) - n1
public class Solution {
public int findKthNumber(int n, int k) {
int cur = 1;
int step;
k--;
while (k > 0) {
step = calStep(n, cur, cur + 1);
if (step <= k) {
k -= step;
cur++;
} else {
k--;
cur *= 10;
}
}
return cur;
}
private int calStep(int n, long n1, long n2) {
int step = 0;
while (n1 <= n) {
step += Math.min(n + 1, n2) - n1;
n1 *= 10;
n2 *= 10;
}
return step;
}
}
最新文章
- hdu 4481 Time travel(高斯求期望)(转)
- Caffe 源碼閱讀(四) Layer.hpp Layer.cpp
- greendao操作数据库的使用方法
- C#事物执行数据
- Oracle RAC 并发与架构
- PHP GC垃圾回收机制之引用变量回收周期疑问
- PHP中基本符号及使用方法
- dbforge studio for mysql 怎样破解
- Android异步请求
- Selenium Webdriver ie 浏览器
- hdu_3518_Boring counting(后缀数组)
- semantic UI first web
- 指定路径下建立Access数据库并插入数据
- 基于Centos7的autobahn-python+crossbar的环境搭建
- 纯css实现轮播(渐变式 less语法)
- Oracle表空间碎片整理SHRINK与MOVE
- Java Web——过滤器
- win10 安装多个版本的jdk,如何切换
- Linux基础命令---杀死进程killall
- CountDownLatch在多线程程序中的应用
热门文章
- Lucene-如何编写Lucene程序
- C# XML序列化/反序列化类XmlSerializer使用示例
- Nuget~管理自己的包包
- UVA	11987 Almost Union-Find (单点修改的并查集)
- [web笔记]解决跨域问题以及axios每次提交session变化的问题
- Kunernetes集群架构与组件
- HTML_5 (1 2 3的代码总结)
- 用 label 控制 Pod 的位置
- [BZOJ4327]:[JZOI2012]玄武密码(AC自动机)
- localStorage对象