字典序最小的K个数字

解题思路:
https://leetcode-cn.com/problems/k-th-smallest-in-lexicographical-order/solution/dfsmo-ni-jian-zhi-guo-cheng-by-muyids/

typedef long long LL;
class Solution {
public:
    int findKthNumber(int n, int k) {
        int prefix = 1;
        k--;
        while(k>0){
            int cnt = getCnt(n,prefix);
            if(cnt<=k){
                k-=cnt;
                prefix++;
            }else{
                k--;
                prefix*=10;
            }
        }
        return prefix;
    }

    int getCnt(LL n,LL prefix){
        LL cnt = 0;
        for(LL first=prefix,second=prefix+1;first<=n;first*=10,second*=10){
            cnt += min(n+1,second) - first;
        }
        return cnt;
    }
};
算法小屋 文章被收录于专栏

不定期分享各类算法以及面经。同时也正在学习相关分布式技术。欢迎一起交流。

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-15 14:22
点赞 评论 收藏
分享
与火:这不接? 留子的钱不挣白不挣
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务