了解一下什么是字典序 学习一下题解困难题(据说常考?
java:
class Solution {
public int findKthNumber(int n, int k) {
long cur = 1;
k -= 1;
while(k > 0){
int nodes = getNodes(n, cur);
if(k >= nodes){
k -= nodes;
cur++;
}else{
k -= 1;
cur *= 10;
}
}
return (int)cur;
}
private int getNodes(int n, long cur){
long totalNodes = 0;
long next = cur + 1;
while(cur <= n){
totalNodes += Math.min(n - cur + 1,next - cur);
next *= 10;
cur *= 10;
}
return (int)totalNodes;
}
}