leetcode 440. 字典序的第K小数字【字典树】

幺幺零

关注

阅读 97

2023-02-22


​​题解参考​​

注意会数据溢出,特判或者采用long long

#define debug(x) cout<<#x<<": "<<(x)<<endl;
using ll = long long;
class Solution {
public:

int findKthNumber(ll n, ll k) {
auto findp = [&]( ll p){
ll ne = p+1;
ll ret=0;
while( p<=n){
ret += min(n+1,ne) - p;
p*=10;
ne*=10;
}
return ret;
};

ll cur = 1;
ll cnt = 1;

while(true){

if(cnt == k){
break;
}
ll t = findp(cur);
if(cnt + t > k ){
int ch = findp(cur*10);
cnt += 1;
cur*=10;
}
else{
cur++;
cnt += t;
}
}
return cur;
}
};

leetcode 440. 字典序的第K小数字【字典树】_#define


精彩评论(0)

0 0 举报