Java解决硬币

class Solution {
    private int dp[];//构建一个一维数组来存储次数
    
    public int coinChange(int[] coins, int amount) {
        if (coins == null || coins.length == 0 || amount == 0) {
            return 0;
        }
        dp=new int[amount+1];
        Arrays.sort(coins);
        for(int i=0;i<coins.length;++i) {
            for(int j=1;j<=amount;++j) {
                if(j==coins[i]) {
                    dp[j]=1;
                }
                if(j>coins[i]) {
                    if(dp[j-coins[i]]!=0) {
                        if(dp[j]==0) {
                            dp[j]=dp[j-coins[i]]+1;
                        }
                        else
                            dp[j]=Math.min(dp[j], dp[j-coins[i]]+1);
                    }
                }
            }
        }
        return dp[amount]==0?-1:dp[amount];
    }
}

 

posted @ 2019-10-07 15:09  pycodego  阅读(367)  评论(0编辑  收藏  举报