440. 字典序的第K小数字
题目链接:440. 字典序的第K小数字
代码如下:
class Solution {
public:int findKthNumber(int n, int k) {int curr = 1;k--;while (k > 0) {int steps = getSteps(curr, n);if (steps <= k) {k -= steps;curr++;} else {curr *= 10;k--;}}return curr;}private:int getSteps(int curr, long n) {int steps = 0;long first = curr;long last = curr;while (first <= n) {steps += min(last, n) - first + 1; // 计算当前前缀的范围内的数字个数first *= 10;last = last * 10 + 9; // 扩展前缀到下一个范围}return steps;}
};
