File tree 2 files changed +65
-0
lines changed
2 files changed +65
-0
lines changed Original file line number Diff line number Diff line change @@ -193,6 +193,41 @@ function keyboard(k: number, n: number): number {
193
193
}
194
194
```
195
195
196
+ #### Swift
197
+
198
+ ``` swift
199
+ class Solution {
200
+ func keyboard (_ k : Int , _ n : Int ) -> Int {
201
+ let mod = 1_000_000_007
202
+ var c = Array (repeating : Array (repeating : 0 , count : k + 1 ), count : n + 1 )
203
+ for i in 0 ... n {
204
+ c[i][0 ] = 1
205
+ }
206
+
207
+ for i in 1 ... n {
208
+ for j in 1 ... k {
209
+ c[i][j] = (c[i - 1 ][j - 1 ] + c[i - 1 ][j]) % mod
210
+ }
211
+ }
212
+
213
+ var f = Array (repeating : Array (repeating : 0 , count : 27 ), count : n + 1 )
214
+ for j in 0 ..< 27 {
215
+ f[0 ][j] = 1
216
+ }
217
+
218
+ for i in 1 ... n {
219
+ for j in 1 ..< 27 {
220
+ for h in 0 ... min (i, k) {
221
+ f[i][j] = (f[i][j] + (f[i - h][j - 1 ] * c[i][h]) % mod) % mod
222
+ }
223
+ }
224
+ }
225
+
226
+ return f[n][26 ]
227
+ }
228
+ }
229
+ ```
230
+
196
231
<!--- tabs: end -->
197
232
198
233
<!-- solution: end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func keyboard( _ k: Int , _ n: Int ) -> Int {
3
+ let mod = 1_000_000_007
4
+ var c = Array ( repeating: Array ( repeating: 0 , count: k + 1 ) , count: n + 1 )
5
+ for i in 0 ... n {
6
+ c [ i] [ 0 ] = 1
7
+ }
8
+
9
+ for i in 1 ... n {
10
+ for j in 1 ... k {
11
+ c [ i] [ j] = ( c [ i - 1 ] [ j - 1 ] + c[ i - 1 ] [ j] ) % mod
12
+ }
13
+ }
14
+
15
+ var f = Array ( repeating: Array ( repeating: 0 , count: 27 ) , count: n + 1 )
16
+ for j in 0 ..< 27 {
17
+ f [ 0 ] [ j] = 1
18
+ }
19
+
20
+ for i in 1 ... n {
21
+ for j in 1 ..< 27 {
22
+ for h in 0 ... min ( i, k) {
23
+ f [ i] [ j] = ( f [ i] [ j] + ( f [ i - h] [ j - 1 ] * c[ i] [ h] ) % mod) % mod
24
+ }
25
+ }
26
+ }
27
+
28
+ return f [ n] [ 26 ]
29
+ }
30
+ }
You can’t perform that action at this time.
0 commit comments