123456789101112131415161718192021222324 |
- class Solution {
- public int findKthNumber(int n, int k) {
- int cur = 1;
- k--;
- // Ten-ary tree
- while (0 < k) {
- int cnt = 0;
- long lo = cur, hi = cur + 1;
- while (lo <= n) {
- cnt += (int) (Math.min(hi, n + 1) - lo);
- lo *= 10;
- hi *= 10;
- } // Count the number of children level by level
- if (cnt <= k) {
- cur++; // Go to next child
- k -= cnt;
- } else {
- cur *= 10; // Go to next level
- k--;
- }
- }
- return cur;
- }
- }
|