【字节跳动面试题】字典序的第K小数字

字典序的第K小数字
在这里插入图片描述

class Solution {
    
    
public:
    typedef long long ll;
    ll count(ll a, ll n) {
    
    
        ll b = a + 1, cnt = 0;
        for(; a <= n; a *= 10, b *= 10) {
    
    
            cnt += min(n + 1, b) - a;
        }
        return cnt;
    }
    int findKthNumber(int n, int k) {
    
    
        int i = 1, j = 1;
        while(i < k) {
    
    
            int cnt = count(j, n);
            if(i + cnt <= k) {
    
    
                j++;
                i += cnt;
            }
            else if(i + cnt > k){
    
    
                j *= 10;
                i++;
            }
        }
        return j;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_41829380/article/details/107337652