classSolution { public: intgetSteps(int curr, long n){ int steps = 0; long first = curr; long last = curr; while (first <= n) { steps += min(last, n) - first + 1; first = first * 10; last = last * 10 + 9; } return steps; }
intfindKthNumber(int n, int k){ int curr = 1; k--; while (k > 0) { int steps = getSteps(curr, n); if (steps <= k) { k -= steps; curr++; } else { curr = curr*10; k--; } } return curr; } };
publicclassSolution { publicintFindKthNumber(int n, int k) { int curr = 1; k--; while (k > 0) { int steps = GetSteps(curr, n); if (steps <= k) { k -= steps; curr++; } else { curr = curr * 10; k--; } } return curr; }
publicintGetSteps(int curr, int n) { long steps = 0; long first = curr; long last = curr; while (first <= n) { steps += Math.Min(last, n) - first + 1; first = first * 10; last = last * 10 + 9; } return (int) steps; } }
intgetSteps(int curr, long n) { int steps = 0; long first = curr; long last = curr; while (first <= n) { steps += MIN(last, n) - first + 1; first = first * 10; last = last * 10 + 9; } return steps; }
intfindKthNumber(int n, int k) { int curr = 1; k--; while (k > 0) { int steps = getSteps(curr, n); if (steps <= k) { k -= steps; curr++; } else { curr = curr*10; k--; } } return curr; }
var findKthNumber = function(n, k) { let curr = 1; k--; while (k > 0) { const steps = getSteps(curr, n); if (steps <= k) { k -= steps; curr++; } else { curr = curr * 10; k--; } } return curr; }
constgetSteps = (curr, n) => { let steps = 0; let first = curr; let last = curr; while (first <= n) { steps += Math.min(last, n) - first + 1; first = first * 10; last = last * 10 + 9; } return steps; };
classSolution: defgetSteps(self, cur: int, n: int) -> int: steps, first, last = 0, cur, cur while first <= n: steps += min(last, n) - first + 1 first *= 10 last = last * 10 + 9 return steps
deffindKthNumber(self, n: int, k: int) -> int: cur = 1 k -= 1 while k: steps = self.getSteps(cur, n) if steps <= k: k -= steps cur += 1 else: cur *= 10 k -= 1 return cur
funcgetSteps(cur, n int) (steps int) { first, last := cur, cur for first <= n { steps += min(last, n) - first + 1 first *= 10 last = last*10 + 9 } return }
funcfindKthNumber(n, k int)int { cur := 1 k-- for k > 0 { steps := getSteps(cur, n) if steps <= k { k -= steps cur++ } else { cur *= 10 k-- } } return cur }
funcmin(a, b int)int { if a > b { return b } return a }