File tree 2 files changed +53
-0
lines changed
lcof2/剑指 Offer II 102. 加减的目标值
2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -163,6 +163,35 @@ func findTargetSumWays(nums []int, target int) int {
163
163
}
164
164
```
165
165
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
+
166
195
<!-- tabs: end -->
167
196
168
197
<!-- solution: end -->
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments