当前位置: 首页 > news >正文

LeetCode hot100-85

https://leetcode.cn/problems/coin-change/?envType=study-plan-v2&envId=top-100-liked

322. 零钱兑换
已解答
中等
相关标签
相关企业
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。

状态转移方程
dp[i] = min(dp[i], dp[i - coin] + 1)
这题没有用Integer.MAX_VALUE,用了amount+1来表示一个不可达的数,因为凑硬币就算是凑一块一块的也最多只需要amount个,amount+1就可以用来表示凑不出来的情况。
这题不用Integer.MAX_VALUE我看了下给的第二个案例就溢出了,coins =[2],amount =3。执行 dp[i]=Math.min(dp[i],dp[i-coins[j]]+1);
dp[2]=Math.min(Integer.MAX_VALUE,1)=1
dp[3]=Math.min(dp[3],dp[1]+1)。这里的dp[1]就是Integer.MAX_VALUE,加一直接溢出变成一个负数。dp[3]就是一个很小的负数了。结果就错了。。。。但是上一题就是那个hot100-84完全平方那个题就用了Integer.MAX_VALUE不会溢出,中间应该是有一些数学道理的,我也没理解,不深究了。。。
也可以不用Integer.MAX_VALUE,用一个Integer.MAX_VALUE/2,测试案例正常情况下是到不了这么大的,我试了下能过。见下面的第二种代码

class Solution {public int coinChange(int[] coins, int amount) {int[] dp=new int[amount+1];Arrays.fill(dp,amount+1);dp[0]=0;for(int i=1;i<=amount;i++){for(int j=0;j<coins.length;j++){if(coins[j]<=i){dp[i]=Math.min(dp[i],dp[i-coins[j]]+1);}}}return dp[amount] > amount ? -1: dp[amount];}
}
class Solution {public int coinChange(int[] coins, int amount) {int[] dp = new int[amount+1];for(int i=1;i<=amount;i++){dp[i]=Integer.MAX_VALUE/2;}for(int i=1;i<=amount;i++){for(int j=0;j<coins.length;j++){if(coins[j]<=i){dp[i]=Math.min(dp[i],dp[i-coins[j]]+1);}}}return dp[amount] == Integer.MAX_VALUE/2 ? -1: dp[amount];}
}
http://www.lryc.cn/news/505704.html

相关文章:

  • linux 内核数据包处理中的一些坑和建议
  • C++ 的衰退复制(decay-copy)
  • vue-cli 5接入模块联邦 module federation
  • 【Rust自学】3.6. 控制流:循环
  • 【第八节】git与github
  • win如何访问Linux数据库(本地)
  • Windows设置所有软件默认以管理员身份运行
  • 前端 计算发布时间(如“1小时前”、“3天前”等)
  • shardingjdbc 4.0.0 seata分布式事务Failed to fetch schema问题
  • 罗德与施瓦茨NRT2功率反射仪,NRT2通过式功率计
  • QLineEdit限制输入固定字节数(UTF-8编码)
  • 基于ubuntu的mysql 8.0安装教程
  • K8s ConfigMap的基础功能介绍
  • Linux——Shell
  • armsom产品编译烧录Linux固件
  • VSCode:Markdown插件安装使用 -- 最简洁的VSCode中Markdown插件安装使用
  • AI 行业发展趋势:科技创新引领未来变革
  • FB爆款打法实操经验总结
  • 微信小程序TTS解决方案
  • centos stream 8下载安装遇到的坑
  • 计算机网络——期末复习(1)背诵
  • AORO M6 Pro单北斗防爆终端全面国产化,关键技术不再“卡脖子”
  • ubuntu 卸载 MySQL
  • 6、基于SpringBoot的网上购物系统
  • AMS1117芯片驱动电路·降压芯片的驱动电路详解
  • 数据仓库工具箱—读书笔记02(Kimball维度建模技术概述02、事实表技术基础)
  • SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期
  • Linux-ubuntu点LED灯C语言版
  • ASP.NET|日常开发中数据集合详解
  • Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架