diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256/README.md" index 5bae4765fa3e0..632d3565e7961 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256/README.md" @@ -141,6 +141,27 @@ func combinationSum4(nums []int, target int) int { } ``` +#### Swift + +```swift +class Solution { + func combinationSum4(_ nums: [Int], _ target: Int) -> Int { + var dp = [Int](repeating: 0, count: target + 1) + dp[0] = 1 + + for i in 1...target { + for num in nums { + if i >= num, dp[i] <= Int.max - dp[i - num] { + dp[i] += dp[i - num] + } + } + } + + return dp[target] + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256/Solution.swift" new file mode 100644 index 0000000000000..b6629dc05aa27 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256/Solution.swift" @@ -0,0 +1,16 @@ +class Solution { + func combinationSum4(_ nums: [Int], _ target: Int) -> Int { + var dp = [Int](repeating: 0, count: target + 1) + dp[0] = 1 + + for i in 1...target { + for num in nums { + if i >= num, dp[i] <= Int.max - dp[i - num] { + dp[i] += dp[i - num] + } + } + } + + return dp[target] + } +}