原创

[百战LeetCode][52. 兑换零钱(一)]


==========================努力奋斗财源广进==========================

一、算法题目

给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。 如果无解,请返回-1.

1、我的题解

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) {
        // write code here
        if(aim < 1) return 0;
        int[] dp = new int[aim+1];
        Arrays.fill(dp, aim+1);
        dp[0] = 0;
        for(int i = 1; i <= aim; i++)
        {
            for(int j = 0; j < arr.length; j++)
            {
                if(arr[j] <= i)
                {
                    dp[i] = Math.min(dp[i], dp[i-arr[j]] + 1);
                }
            }
        }
        return dp[aim] > aim ? -1 : dp[aim];
    }
}

2、优秀题解

//待定

三、解法心得

四、自我监督

评论区记录复习记录

  • 作者:北斗七点半联系作者
  • 发表时间:2022-12-27 21:48
  • 版权声明:禁止转载
  • 非公众号转发
  • 评论