[编程题] lk [322. 零钱兑换]

[编程题] lk 322. 零钱兑换

题目

image-20200731202452553

输入输出

image-20200731202502889

注意的问题

一开始我们默认把dp初始化为amount+1的值,当发现能更新的话就会更新掉这个值。

方法1:动态规划

class Solution {
    public int coinChange(int[] coins, int amount) {
        int[] dp = new int[amount+1];
        //初始化为amount+1的初始值
        Arrays.fill(dp, amount+1);
        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);
                }
            }
        }
        return dp[amount]>amount?-1:dp[amount];
    }
}
posted @ 2020-07-31 20:27  北鼻coder  阅读(147)  评论(0编辑  收藏  举报