322. 零錢兌換

題目:

322. 零錢兌換
在這裏插入圖片描述

題解:動態規劃

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

代碼:動態規劃

/**
 * code322
 */
public class code322 {

    public static int coinChange(int[] coins, int amount) {
        int max = 100000000;    // 一億
        int dp[] = new int[amount + 1];
        for (int i = 0; i < dp.length; i++) {
            dp[i] = max;
        }
        dp[0] = 0;
        for (int i = 1; i <= amount; i++) {
            for (int j = 0; j < coins.length; j++) {
                if (coins[j] <= i) {
                    dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);
                }
            }
        }
        if (dp[amount] > amount) {
            return -1;
        } else {
            return dp[amount];
        }
    }

    public static void main(String[] args) {
        int coins1[] = { 1, 2, 5 };
        int amount1 = 11;
        int ans1 = coinChange(coins1, amount1);
        System.out.println(ans1);

        int coins2[] = { 2 };
        int amount2 = 3;
        int ans2 = coinChange(coins2, amount2);
        System.out.println(ans2);
    }
}

參考:

  1. 322. 零錢兌換
  2. 自底向上動態規劃
  3. 【零錢兌換】貪心 + dfs = 8ms
  4. Java 遞歸、記憶化搜索、動態規劃
  5. 動態規劃套路詳解
  6. DFS + 剪枝 2ms 擊敗100%,比 DP 還快?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章