@@ -139,40 +139,71 @@ func findTheWinner(n int, k int) int {
139
139
#### TypeScript
140
140
141
141
``` ts
142
- class LinkNode {
143
- public val: number ;
144
- public next: LinkNode ;
145
-
146
- constructor (val : number = 0 , next ? : LinkNode ) {
147
- this .val = val ;
148
- this .next = next ;
142
+ function findTheWinner(n : number , k : number ): number {
143
+ if (n === 1 ) {
144
+ return 1 ;
149
145
}
146
+ const ans = (k + findTheWinner (n - 1 , k )) % n ;
147
+ return ans ? ans : n ;
150
148
}
149
+ ```
151
150
152
- function findTheWinner(n : number , k : number ): number {
153
- if (k === 1 ) {
154
- return n ;
151
+ #### JavaScript
152
+
153
+ ``` js
154
+ /**
155
+ * @param {number} n
156
+ * @param {number} k
157
+ * @return {number}
158
+ */
159
+ var findTheWinner = function (n , k ) {
160
+ if (n === 1 ) {
161
+ return 1 ;
155
162
}
156
- const dummy = new LinkNode (0 );
157
- let cur = dummy ;
158
- for (let i = 1 ; i <= n ; i ++ ) {
159
- cur .next = new LinkNode (i );
160
- cur = cur .next ;
163
+ const ans = (k + findTheWinner (n - 1 , k)) % n;
164
+ return ans ? ans : n;
165
+ };
166
+ ```
167
+
168
+ <!-- tabs: end -->
169
+
170
+ <!-- solution: end -->
171
+
172
+ <!-- solution: start -->
173
+
174
+ ### Solution 2: Simulation
175
+
176
+ <!-- tabs: start -->
177
+
178
+ #### TypeScript
179
+
180
+ ``` ts
181
+ function findTheWinner(n : number , k : number ): number {
182
+ const arr = Array .from ({ length: n }, (_ , i ) => i + 1 );
183
+ let i = 0 ;
184
+
185
+ while (arr .length > 1 ) {
186
+ i = (i + k - 1 ) % arr .length ;
187
+ arr .splice (i , 1 );
161
188
}
162
- cur .next = dummy .next ;
163
-
164
- cur = dummy ;
165
- let count = 0 ;
166
- while (cur .next != cur ) {
167
- count ++ ;
168
- if (count === k ) {
169
- cur .next = cur .next .next ;
170
- count = 0 ;
171
- } else {
172
- cur = cur .next ;
173
- }
189
+
190
+ return arr [0 ];
191
+ }
192
+ ```
193
+
194
+ #### JavaScript
195
+
196
+ ``` js
197
+ function findTheWinner (n , k ) {
198
+ const arr = Array .from ({ length: n }, (_ , i ) => i + 1 );
199
+ let i = 0 ;
200
+
201
+ while (arr .length > 1 ) {
202
+ i = (i + k - 1 ) % arr .length ;
203
+ arr .splice (i, 1 );
174
204
}
175
- return cur .val ;
205
+
206
+ return arr[0 ];
176
207
}
177
208
```
178
209
0 commit comments