Skip to content

Commit f335e25

Browse files
authored
feat: add swift implementation to lcci problem: No.08.11 (doocs#2697)
1 parent 546980b commit f335e25

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

lcci/08.11.Coin/README.md

+21
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,27 @@ function waysToChange(n: number): number {
161161
}
162162
```
163163

164+
```swift
165+
class Solution {
166+
func waysToChange(_ n: Int) -> Int {
167+
let mod = Int(1e9 + 7)
168+
let coins = [25, 10, 5, 1]
169+
var f = Array(repeating: Array(repeating: 0, count: n + 1), count: 5)
170+
f[0][0] = 1
171+
172+
for i in 1...4 {
173+
for j in 0...n {
174+
f[i][j] = f[i - 1][j]
175+
if j >= coins[i - 1] {
176+
f[i][j] = (f[i][j] + f[i][j - coins[i - 1]]) % mod
177+
}
178+
}
179+
}
180+
return f[4][n]
181+
}
182+
}
183+
```
184+
164185
<!-- tabs:end -->
165186

166187
### 方法二:动态规划(空间优化)

lcci/08.11.Coin/README_EN.md

+21
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,27 @@ function waysToChange(n: number): number {
173173
}
174174
```
175175

176+
```swift
177+
class Solution {
178+
func waysToChange(_ n: Int) -> Int {
179+
let mod = Int(1e9 + 7)
180+
let coins = [25, 10, 5, 1]
181+
var f = Array(repeating: Array(repeating: 0, count: n + 1), count: 5)
182+
f[0][0] = 1
183+
184+
for i in 1...4 {
185+
for j in 0...n {
186+
f[i][j] = f[i - 1][j]
187+
if j >= coins[i - 1] {
188+
f[i][j] = (f[i][j] + f[i][j - coins[i - 1]]) % mod
189+
}
190+
}
191+
}
192+
return f[4][n]
193+
}
194+
}
195+
```
196+
176197
<!-- tabs:end -->
177198

178199
### Solution 2: Dynamic Programming (Space Optimization)

lcci/08.11.Coin/Solution.swift

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
func waysToChange(_ n: Int) -> Int {
3+
let mod = Int(1e9 + 7)
4+
let coins = [25, 10, 5, 1]
5+
var f = Array(repeating: Array(repeating: 0, count: n + 1), count: 5)
6+
f[0][0] = 1
7+
8+
for i in 1...4 {
9+
for j in 0...n {
10+
f[i][j] = f[i - 1][j]
11+
if j >= coins[i - 1] {
12+
f[i][j] = (f[i][j] + f[i][j - coins[i - 1]]) % mod
13+
}
14+
}
15+
}
16+
return f[4][n]
17+
}
18+
}

0 commit comments

Comments
 (0)