Skip to content

Commit a08c8cd

Browse files
authored
feat: add swift implementation to lcof2 problem: No.102 (doocs#3614)
1 parent 7b6deb2 commit a08c8cd

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

lcof2/剑指 Offer II 102. 加减的目标值/README.md

+29
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,35 @@ func findTargetSumWays(nums []int, target int) int {
163163
}
164164
```
165165

166+
#### Swift
167+
168+
```swift
169+
class Solution {
170+
func findTargetSumWays(_ nums: [Int], _ target: Int) -> Int {
171+
if target < -1000 || target > 1000 {
172+
return 0
173+
}
174+
175+
let n = nums.count
176+
var dp = Array(repeating: Array(repeating: 0, count: 2001), count: n)
177+
178+
dp[0][nums[0] + 1000] += 1
179+
dp[0][-nums[0] + 1000] += 1
180+
181+
for i in 1..<n {
182+
for j in -1000...1000 {
183+
if dp[i - 1][j + 1000] > 0 {
184+
dp[i][j + nums[i] + 1000] += dp[i - 1][j + 1000]
185+
dp[i][j - nums[i] + 1000] += dp[i - 1][j + 1000]
186+
}
187+
}
188+
}
189+
190+
return dp[n - 1][target + 1000]
191+
}
192+
}
193+
```
194+
166195
<!-- tabs:end -->
167196

168197
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
func findTargetSumWays(_ nums: [Int], _ target: Int) -> Int {
3+
if target < -1000 || target > 1000 {
4+
return 0
5+
}
6+
7+
let n = nums.count
8+
var dp = Array(repeating: Array(repeating: 0, count: 2001), count: n)
9+
10+
dp[0][nums[0] + 1000] += 1
11+
dp[0][-nums[0] + 1000] += 1
12+
13+
for i in 1..<n {
14+
for j in -1000...1000 {
15+
if dp[i - 1][j + 1000] > 0 {
16+
dp[i][j + nums[i] + 1000] += dp[i - 1][j + 1000]
17+
dp[i][j - nums[i] + 1000] += dp[i - 1][j + 1000]
18+
}
19+
}
20+
}
21+
22+
return dp[n - 1][target + 1000]
23+
}
24+
}

0 commit comments

Comments
 (0)