欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Hot100】LeetCode—322. 零钱兑换

【Hot100】LeetCode—322. 零钱兑换

2025/2/23 1:59:49 来源:https://blog.csdn.net/weixin_44382896/article/details/142054276  浏览:    关键词:【Hot100】LeetCode—322. 零钱兑换

目录

  • 1- 思路
    • 动态规划
  • 2- 实现
    • 322. 零钱兑换——题解思路
  • 3- ACM 实现


  • 原题链接:322. 零钱兑换

1- 思路

动态规划

动规五部曲

  • 1- 定义 dp 数组确定含义
    • dp[j] 代表凑到金钱为 j 的最少硬币个数
  • 2- 递推公式
    • dp[j] = Math.min(dp[j],dp[amount-]+1)
  • 3- 初始化
    • dp[0] = 0
    • 其他全部初始化为 max
  • 4- 遍历顺序
    • 先遍历物品,再遍历背包
    • 递推过程需要判断 dp[j - coins[i]] != max

2- 实现

322. 零钱兑换——题解思路

在这里插入图片描述

class Solution {public int coinChange(int[] coins, int amount) {// 1. 定义 dp 数组// dp[j] 代表凑到金钱为 j 的最少硬币个数int[] dp = new int[amount+1];// 2.递推公式// dp[j] = Math.min(dp[j],dp[amount-]+1)// 初始化dp[0] = 0;int max = Integer.MAX_VALUE;for(int i = 1 ; i <= amount;i++){dp[i] = max;}// 4. 遍历顺序// 物品for(int i = 0 ; i < coins.length;i++){for(int j = coins[i] ; j <= amount ; j++){if(dp[j - coins[i]] != max){dp[j] = Math.min(dp[j],dp[j-coins[i]]+1);}}}if(dp[amount]==max){return -1;}return dp[amount];}
}

3- ACM 实现

public class minCoins {public static int minCoins(int[] nums,int target){// 定义 dpint[] dp = new int[target+1];// 2. 递推公式// dp[j] = Math.min(dp[j],dp[j-coins[i]]+1);// 3.初始化dp[0] = 0;int max = Integer.MAX_VALUE;for(int i = 1 ; i <= target;i++){dp[i] = max;}// 4.遍历顺序for(int i = 0 ; i <nums.length;i++){for(int j = nums[i]; j<=target;j++){if(dp[j-nums[i]] != max){dp[j] = Math.min(dp[j],dp[j-nums[i]]+1);}}}if(dp[target]==max){return -1;}return dp[target];}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();String[] parts = input.split(" ");int[] nums = new int[parts.length];for(int i = 0 ; i < parts.length;i++){nums[i] = Integer.parseInt(parts[i]);}int target = sc.nextInt();System.out.println("结果是"+minCoins(nums,target));}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词