zoukankan      html  css  js  c++  java
  • 322. 零钱兑换

    原题链接:https://leetcode-cn.com/problems/coin-change/

    class Solution {
        public int coinChange(int[] coins, int amount) {
            int[] dp = new int[amount + 1];
            // 初始化 
            // fill() 用法
            /**
            int[] a = new int[]{1,2,3,4,5,6};
            System.out.println(Arrays.toString(a));  //{1,2,3,4,5,6}
        
            Arrays.fill(a, 0);
            System.out.println(Arrays.toString(a));  //{0,0,0,0,0,0}    
            
            int[] b = new int[]{1,2,3,4,5,6};
            Arrays.fill(b, 2, 4, 0);
            System.out.println(Arrays.toString(b));  //{1,2,0,0,5,6}
            **/
             Arrays.fill(dp, amount + 1);
            dp[0] = 0;
            // dp[i] = k 表示i元时,需要k个硬币 
            for (int i = 1; i <= amount; i++){
                for (int j = 0; j < coins.length; j++){
                    if (coins[j] <=i){
                        // i元需要的硬币个数为 i减去其中一个硬币值后后再加一个硬币的个数 然后取最小的那个
                        dp[i] = Math.min(dp[i],dp[i-coins[j]] + 1);
                    }
                }
            }
            return dp[amount] > amount?-1:dp[amount];
        }
    }
    

      难点:

    1  Arrays.fill() 用法记住

    2  状态转移方程式:

     dp[i] = Math.min(dp[i],dp[i-coins[j]] + 1);
  • 相关阅读:
    HTML5元素标记释义
    Mvc使用Partial View 来封装上传控件
    订单页过滤,sql写法
    防止提交重复订单的方法
    查询数据库所有列
    asp.net 异常处理
    7. DateTime,TimeSpan
    8.1.thread
    8.2.Task
    2.2. Array
  • 原文地址:https://www.cnblogs.com/junbaba/p/14181804.html
Copyright © 2011-2022 走看看