File tree Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Expand file tree Collapse file tree 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 {
193193}
194194```
195195
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+
196231<!--- tabs: end -->
197232
198233<!-- 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