File tree Expand file tree Collapse file tree 2 files changed +53
-0
lines changed
lcof2/剑指 Offer II 102. 加减的目标值 Expand file tree Collapse file tree 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 {
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 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