diff --git a/docs/notes/Leetcode 题解 - 动态规划.md b/docs/notes/Leetcode 题解 - 动态规划.md index 384fa4b7..5ed2beb6 100644 --- a/docs/notes/Leetcode 题解 - 动态规划.md +++ b/docs/notes/Leetcode 题解 - 动态规划.md @@ -869,22 +869,18 @@ return -1. ```java public int coinChange(int[] coins, int amount) { - if (amount == 0 || coins == null || coins.length == 0) { +public int change(int amount, int[] coins) { + if (coins == null) { return 0; } int[] dp = new int[amount + 1]; + dp[0] = 1; for (int coin : coins) { - for (int i = coin; i <= amount; i++) { //将逆序遍历改为正序遍历 - if (i == coin) { - dp[i] = 1; - } else if (dp[i] == 0 && dp[i - coin] != 0) { - dp[i] = dp[i - coin] + 1; - } else if (dp[i - coin] != 0) { - dp[i] = Math.min(dp[i], dp[i - coin] + 1); - } + for (int i = coin; i <= amount; i++) { + dp[i] += dp[i - coin]; } } - return dp[amount] == 0 ? -1 : dp[amount]; + return dp[amount]; } ``` diff --git a/notes/Leetcode 题解 - 动态规划.md b/notes/Leetcode 题解 - 动态规划.md index f54dac21..1b36b521 100644 --- a/notes/Leetcode 题解 - 动态规划.md +++ b/notes/Leetcode 题解 - 动态规划.md @@ -869,22 +869,18 @@ return -1. ```java public int coinChange(int[] coins, int amount) { - if (amount == 0 || coins == null || coins.length == 0) { +public int change(int amount, int[] coins) { + if (coins == null) { return 0; } int[] dp = new int[amount + 1]; + dp[0] = 1; for (int coin : coins) { - for (int i = coin; i <= amount; i++) { //将逆序遍历改为正序遍历 - if (i == coin) { - dp[i] = 1; - } else if (dp[i] == 0 && dp[i - coin] != 0) { - dp[i] = dp[i - coin] + 1; - } else if (dp[i - coin] != 0) { - dp[i] = Math.min(dp[i], dp[i - coin] + 1); - } + for (int i = coin; i <= amount; i++) { + dp[i] += dp[i - coin]; } } - return dp[amount] == 0 ? -1 : dp[amount]; + return dp[amount]; } ```