0
点赞
收藏
分享

微信扫一扫

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

幺幺零 2023-02-22 阅读 97


​​题解参考​​

注意会数据溢出,特判或者采用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 条评论