From 1a3da386e60258f1a11dc8115411f639beb41ab7 Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Tue, 8 Oct 2024 07:55:01 +0100 Subject: [PATCH 1/4] feat: add swift implementation to lcof2 problem: No.104 --- .../README.md" | 21 +++++++++++++++++++ .../Solution.swift" | 16 ++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 "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" 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..4eed98fb787c9 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] += 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..c28f8254a8f5b --- /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] += dp[i - num] + } + } + } + + return dp[target] + } +} \ No newline at end of file From 8b115c7e653ebee87eeecbdb497dbd9b083d7166 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Tue, 8 Oct 2024 17:37:46 +0800 Subject: [PATCH 2/4] Update README.md --- .../README.md" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 4eed98fb787c9..a1d50f00c62b5 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" @@ -147,16 +147,16 @@ func combinationSum4(nums []int, target int) int { class Solution { func combinationSum4(_ nums: [Int], _ target: Int) -> Int { var dp = [Int](repeating: 0, count: target + 1) - dp[0] = 1 + dp[0] = 1 for i in 1...target { for num in nums { - if i >= num { + if i >= num, dp[i] <= Int.max - dp[i - num] { dp[i] += dp[i - num] } } } - + return dp[target] } } From f10773da4724294d2fd3882de7a47dfd372c2c5f Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Tue, 8 Oct 2024 17:38:04 +0800 Subject: [PATCH 3/4] Update Solution.swift --- .../Solution.swift" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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" index c28f8254a8f5b..b6629dc05aa27 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/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" @@ -1,16 +1,16 @@ class Solution { func combinationSum4(_ nums: [Int], _ target: Int) -> Int { var dp = [Int](repeating: 0, count: target + 1) - dp[0] = 1 + dp[0] = 1 for i in 1...target { for num in nums { - if i >= num { + if i >= num, dp[i] <= Int.max - dp[i - num] { dp[i] += dp[i - num] } } } - + return dp[target] } -} \ No newline at end of file +} From bc89d6653e08142398cd086df0a851640a709ba3 Mon Sep 17 00:00:00 2001 From: yanglbme Date: Tue, 8 Oct 2024 09:38:53 +0000 Subject: [PATCH 4/4] style: format code and docs with prettier --- .../README.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 a1d50f00c62b5..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" @@ -143,12 +143,12 @@ func combinationSum4(nums []int, target int) int { #### Swift -```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] {