diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256/README.md" index 96d02c1d78299..c7f06ff5fb2b5 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256/README.md" @@ -169,6 +169,26 @@ var coinChange = function (coins, amount) { }; ``` +#### Swift + +```swift +class Solution { + func coinChange(_ coins: [Int], _ amount: Int) -> Int { + var dp = [Int](repeating: amount + 1, count: amount + 1) + dp[0] = 0 + + for coin in coins { + if coin > amount { continue } + for j in coin...amount { + dp[j] = min(dp[j], dp[j - coin] + 1) + } + } + + return dp[amount] > amount ? -1 : dp[amount] + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256/Solution.swift" new file mode 100644 index 0000000000000..2a8a532c972c1 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256/Solution.swift" @@ -0,0 +1,15 @@ +class Solution { + func coinChange(_ coins: [Int], _ amount: Int) -> Int { + var dp = [Int](repeating: amount + 1, count: amount + 1) + dp[0] = 0 + + for coin in coins { + if coin > amount { continue } + for j in coin...amount { + dp[j] = min(dp[j], dp[j - coin] + 1) + } + } + + return dp[amount] > amount ? -1 : dp[amount] + } +}