力扣中322 零钱兑换

 

 

 看了题解基本上能写个7788 但是一些细节的处理还是bug

public int coinChange(int[] coins, int amount) {
        int len = coins.length;
        int[]dp=new int[amount+1]; //这块amount+1 dp数组还有位置0
        Arrays.fill(dp, amount+1);//这块原来设置整数最大值 其实amount+1就够了
        dp[0]=0;   //这块设置0处为0航 其他对于df[coins[i]]不用设置 大循环里包含了
        for(int i=1;i<=amount;i++) {
            for(int j=0;j<len;j++) {
                if(coins[j]<=i) {//不判断这个会bug 因为dp寻址为负数
                    dp[i]=Math.min(dp[i-coins[j]]+1, dp[i]);
                }
            }
        }
        return dp[amount]>amount?-1:dp[amount] ;
    }

 

posted @ 2023-03-16 17:27  Ssshiny  阅读(14)  评论(0)    收藏  举报