File tree Expand file tree Collapse file tree 10 files changed +9353
-8966
lines changed
0400-0499/0440.K-th Smallest in Lexicographical Order Expand file tree Collapse file tree 10 files changed +9353
-8966
lines changed Original file line number Diff line number Diff line change 44
44
<!-- 这里可写当前语言的特殊实现逻辑 -->
45
45
46
46
``` python
47
-
47
+ class Solution :
48
+ def findKthNumber (self , n : int , k : int ) -> int :
49
+ def count (curr ):
50
+ next , cnt = curr + 1 , 0
51
+ while curr <= n:
52
+ cnt += min (n - curr + 1 , next - curr)
53
+ next , curr = next * 10 , curr * 10
54
+ return cnt
55
+
56
+ curr = 1
57
+ k -= 1
58
+ while k:
59
+ cnt = count(curr)
60
+ if k >= cnt:
61
+ k -= cnt
62
+ curr += 1
63
+ else :
64
+ k -= 1
65
+ curr *= 10
66
+ return curr
48
67
```
49
68
50
69
### ** Java**
51
70
52
71
<!-- 这里可写当前语言的特殊实现逻辑 -->
53
72
54
73
``` java
74
+ class Solution {
75
+ private int n;
76
+
77
+ public int findKthNumber (int n , int k ) {
78
+ this . n = n;
79
+ long curr = 1 ;
80
+ -- k;
81
+ while (k > 0 ) {
82
+ int cnt = count(curr);
83
+ if (k >= cnt) {
84
+ k -= cnt;
85
+ ++ curr;
86
+ } else {
87
+ -- k;
88
+ curr *= 10 ;
89
+ }
90
+ }
91
+ return (int ) curr;
92
+ }
93
+
94
+
95
+ public int count (long curr ) {
96
+ long next = curr + 1 ;
97
+ long cnt = 0 ;
98
+ while (curr <= n) {
99
+ cnt += Math . min(n - curr + 1 , next - curr);
100
+ next *= 10 ;
101
+ curr *= 10 ;
102
+ }
103
+ return (int ) cnt;
104
+ }
105
+ }
106
+ ```
107
+
108
+ ### ** C++**
109
+
110
+ ``` cpp
111
+ class Solution {
112
+ public:
113
+ int n;
114
+
115
+ int findKthNumber(int n, int k) {
116
+ this->n = n;
117
+ --k;
118
+ long long curr = 1;
119
+ while (k)
120
+ {
121
+ int cnt = count(curr);
122
+ if (k >= cnt)
123
+ {
124
+ k -= cnt;
125
+ ++curr;
126
+ }
127
+ else
128
+ {
129
+ --k;
130
+ curr * = 10;
131
+ }
132
+ }
133
+ return (int) curr;
134
+ }
135
+
136
+ int count(long long curr) {
137
+ long long next = curr + 1;
138
+ int cnt = 0;
139
+ while (curr <= n)
140
+ {
141
+ cnt += min(n - curr + 1, next - curr);
142
+ next *= 10;
143
+ curr *= 10;
144
+ }
145
+ return cnt;
146
+ }
147
+ };
148
+ ```
55
149
150
+ ### ** Go**
151
+
152
+ ``` go
153
+ func findKthNumber (n int , k int ) int {
154
+ count := func (curr int ) int {
155
+ next := curr + 1
156
+ cnt := 0
157
+ for curr <= n {
158
+ cnt += min (n-curr+1 , next-curr)
159
+ next *= 10
160
+ curr *= 10
161
+ }
162
+ return cnt
163
+ }
164
+ curr := 1
165
+ k--
166
+ for k > 0 {
167
+ cnt := count (curr)
168
+ if k >= cnt {
169
+ k -= cnt
170
+ curr++
171
+ } else {
172
+ k--
173
+ curr *= 10
174
+ }
175
+ }
176
+ return curr
177
+ }
178
+
179
+ func min (a , b int ) int {
180
+ if a < b {
181
+ return a
182
+ }
183
+ return b
184
+ }
56
185
```
57
186
58
187
### ** ...**
Original file line number Diff line number Diff line change 36
36
### ** Python3**
37
37
38
38
``` python
39
-
39
+ class Solution :
40
+ def findKthNumber (self , n : int , k : int ) -> int :
41
+ def count (curr ):
42
+ next , cnt = curr + 1 , 0
43
+ while curr <= n:
44
+ cnt += min (n - curr + 1 , next - curr)
45
+ next , curr = next * 10 , curr * 10
46
+ return cnt
47
+
48
+ curr = 1
49
+ k -= 1
50
+ while k:
51
+ cnt = count(curr)
52
+ if k >= cnt:
53
+ k -= cnt
54
+ curr += 1
55
+ else :
56
+ k -= 1
57
+ curr *= 10
58
+ return curr
40
59
```
41
60
42
61
### ** Java**
43
62
44
63
``` java
64
+ class Solution {
65
+ private int n;
66
+
67
+ public int findKthNumber (int n , int k ) {
68
+ this . n = n;
69
+ long curr = 1 ;
70
+ -- k;
71
+ while (k > 0 ) {
72
+ int cnt = count(curr);
73
+ if (k >= cnt) {
74
+ k -= cnt;
75
+ ++ curr;
76
+ } else {
77
+ -- k;
78
+ curr *= 10 ;
79
+ }
80
+ }
81
+ return (int ) curr;
82
+ }
83
+
84
+
85
+ public int count (long curr ) {
86
+ long next = curr + 1 ;
87
+ long cnt = 0 ;
88
+ while (curr <= n) {
89
+ cnt += Math . min(n - curr + 1 , next - curr);
90
+ next *= 10 ;
91
+ curr *= 10 ;
92
+ }
93
+ return (int ) cnt;
94
+ }
95
+ }
96
+ ```
97
+
98
+ ### ** C++**
99
+
100
+ ``` cpp
101
+ class Solution {
102
+ public:
103
+ int n;
104
+
105
+ int findKthNumber(int n, int k) {
106
+ this->n = n;
107
+ --k;
108
+ long long curr = 1;
109
+ while (k)
110
+ {
111
+ int cnt = count(curr);
112
+ if (k >= cnt)
113
+ {
114
+ k -= cnt;
115
+ ++curr;
116
+ }
117
+ else
118
+ {
119
+ --k;
120
+ curr * = 10;
121
+ }
122
+ }
123
+ return (int) curr;
124
+ }
125
+
126
+ int count(long long curr) {
127
+ long long next = curr + 1;
128
+ int cnt = 0;
129
+ while (curr <= n)
130
+ {
131
+ cnt += min(n - curr + 1, next - curr);
132
+ next *= 10;
133
+ curr *= 10;
134
+ }
135
+ return cnt;
136
+ }
137
+ };
138
+ ```
45
139
140
+ ### ** Go**
141
+
142
+ ``` go
143
+ func findKthNumber (n int , k int ) int {
144
+ count := func (curr int ) int {
145
+ next := curr + 1
146
+ cnt := 0
147
+ for curr <= n {
148
+ cnt += min (n-curr+1 , next-curr)
149
+ next *= 10
150
+ curr *= 10
151
+ }
152
+ return cnt
153
+ }
154
+ curr := 1
155
+ k--
156
+ for k > 0 {
157
+ cnt := count (curr)
158
+ if k >= cnt {
159
+ k -= cnt
160
+ curr++
161
+ } else {
162
+ k--
163
+ curr *= 10
164
+ }
165
+ }
166
+ return curr
167
+ }
168
+
169
+ func min (a , b int ) int {
170
+ if a < b {
171
+ return a
172
+ }
173
+ return b
174
+ }
46
175
```
47
176
48
177
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int n;
4
+
5
+ int findKthNumber (int n, int k) {
6
+ this ->n = n;
7
+ --k;
8
+ long long curr = 1 ;
9
+ while (k)
10
+ {
11
+ int cnt = count (curr);
12
+ if (k >= cnt)
13
+ {
14
+ k -= cnt;
15
+ ++curr;
16
+ }
17
+ else
18
+ {
19
+ --k;
20
+ curr *= 10 ;
21
+ }
22
+ }
23
+ return (int ) curr;
24
+ }
25
+
26
+ int count (long long curr) {
27
+ long long next = curr + 1 ;
28
+ int cnt = 0 ;
29
+ while (curr <= n)
30
+ {
31
+ cnt += min (n - curr + 1 , next - curr);
32
+ next *= 10 ;
33
+ curr *= 10 ;
34
+ }
35
+ return cnt;
36
+ }
37
+ };
Original file line number Diff line number Diff line change
1
+ func findKthNumber (n int , k int ) int {
2
+ count := func (curr int ) int {
3
+ next := curr + 1
4
+ cnt := 0
5
+ for curr <= n {
6
+ cnt += min (n - curr + 1 , next - curr )
7
+ next *= 10
8
+ curr *= 10
9
+ }
10
+ return cnt
11
+ }
12
+ curr := 1
13
+ k --
14
+ for k > 0 {
15
+ cnt := count (curr )
16
+ if k >= cnt {
17
+ k -= cnt
18
+ curr ++
19
+ } else {
20
+ k --
21
+ curr *= 10
22
+ }
23
+ }
24
+ return curr
25
+ }
26
+
27
+ func min (a , b int ) int {
28
+ if a < b {
29
+ return a
30
+ }
31
+ return b
32
+ }
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ private int n ;
3
+
4
+ public int findKthNumber (int n , int k ) {
5
+ this .n = n ;
6
+ long curr = 1 ;
7
+ --k ;
8
+ while (k > 0 ) {
9
+ int cnt = count (curr );
10
+ if (k >= cnt ) {
11
+ k -= cnt ;
12
+ ++curr ;
13
+ } else {
14
+ --k ;
15
+ curr *= 10 ;
16
+ }
17
+ }
18
+ return (int ) curr ;
19
+ }
20
+
21
+
22
+ public int count (long curr ) {
23
+ long next = curr + 1 ;
24
+ long cnt = 0 ;
25
+ while (curr <= n ) {
26
+ cnt += Math .min (n - curr + 1 , next - curr );
27
+ next *= 10 ;
28
+ curr *= 10 ;
29
+ }
30
+ return (int ) cnt ;
31
+ }
32
+ }
You can’t perform that action at this time.
0 commit comments