diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274/README.md" index 8c6e72e679a66..c91e2d23ebc21 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274/README.md" @@ -163,6 +163,35 @@ func findTargetSumWays(nums []int, target int) int { } ``` +#### Swift + +```swift +class Solution { + func findTargetSumWays(_ nums: [Int], _ target: Int) -> Int { + if target < -1000 || target > 1000 { + return 0 + } + + let n = nums.count + var dp = Array(repeating: Array(repeating: 0, count: 2001), count: n) + + dp[0][nums[0] + 1000] += 1 + dp[0][-nums[0] + 1000] += 1 + + for i in 1.. 0 { + dp[i][j + nums[i] + 1000] += dp[i - 1][j + 1000] + dp[i][j - nums[i] + 1000] += dp[i - 1][j + 1000] + } + } + } + + return dp[n - 1][target + 1000] + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274/Solution.swift" new file mode 100644 index 0000000000000..d6e91b605e4a9 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274/Solution.swift" @@ -0,0 +1,24 @@ +class Solution { + func findTargetSumWays(_ nums: [Int], _ target: Int) -> Int { + if target < -1000 || target > 1000 { + return 0 + } + + let n = nums.count + var dp = Array(repeating: Array(repeating: 0, count: 2001), count: n) + + dp[0][nums[0] + 1000] += 1 + dp[0][-nums[0] + 1000] += 1 + + for i in 1.. 0 { + dp[i][j + nums[i] + 1000] += dp[i - 1][j + 1000] + dp[i][j - nums[i] + 1000] += dp[i - 1][j + 1000] + } + } + } + + return dp[n - 1][target + 1000] + } +} \ No newline at end of file