NC126 换钱的最少货币数

换钱的最少货币数

https://www.nowcoder.com/practice/3911a20b3f8743058214ceaa099eeb45?tpId=188&&tqId=38635&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking

import java.util.*;


public class Solution {
    /**
     * 最少货币数
     * @param arr int整型一维数组 the array
     * @param aim int整型 the target
     * @return int整型
     */
    public int minMoney (int[] arr, int aim) {

        int[] dp = new int[aim+1];
        dp[0] = 0;
        int MAX = 10000; // Integer.MAX_INT 直接设置成最大值时 会发现 在  例如235 在i=3 时 
    //dp[i-arr[j]] +1 会从最大值变成最小值溢出了  所以需要注意
        for(int i =1;i<=aim;i++) dp[i] = MAX;

        for(int i = 0; i<= aim ; i++){
            for(int j = 0; j<arr.length; j++ ){
                if(i < arr[j]) continue;
                dp[i] = Math.min(dp[i], dp[i-arr[j]] +1);
            }
        }
        if(dp[aim] == MAX) return -1;

        else return dp[aim];

    }
}
全部评论

相关推荐

07-24 12:30
湘潭大学 营销
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务