Leetcode-322. 零钱兑换个人答案与官方答案的一个对比(以及对测试用例的思考)
题目链接
https://leetcode-cn.com/problems/coin-change/
题目描述
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。
示例 1:
输入: coins = [1, 2, 5], amount = 11
输出: 3
解释: 11 = 5 + 5 + 1
示例 2:
输入: coins = [2], amount = 3
输出: -1
个人解题代码:
class Solution {public int coinChange(int[] coins, int amount) {int[] f = new int[amount+1];if(amount==0){return 0;}for(int i = 0;i<coins.length;i++){if(coins[i]>amount){continue;}f[coins[i]]=1;}for(int i =1;i<=amount;i++) {if(f[i]==0){f[i]=Integer.MAX_VALUE;}}for(int i = 1;i<=amount;i++){if(f[i]==Integer.MAX_VALUE ){int min = Integer.MAX_VALUE-1;for(int j = 0;j<coins.length;j++){if(coins[j]<=i){min = Math.min(min,f[i-coins[j]]+1);}}f[i]=min;}}return f[amount]>=Integer.MAX_VALUE-1?-1:f[amount];}
}
官方解题代码
public class Solution {public int coinChange(int[] coins, int amount) {int max = amount + 1;int[] dp = new int[amount + 1];Arrays.fill(dp, max);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];}
}
问题——对测试用例的思考
在一次提交中,我遇到了种种情况,当时的我的感受就是,测试用例为何如此刁钻。 Integer.MAX_VALUE 正是2147483647。
我当时差点拉黑了LeetCode,但后来想一想确实是自己错了。
但因为Leetcode用了这样的测试用例,我看了官方解答,之后发现了一个漏洞,倘若我把这个题目中的amount页设置成2147483647,那么官方的代码不久错误了么,果然,在我的操作下,出现了异常。
希望
希望测试用例不要太刁钻把。。。。
Leetcode-322. 零钱兑换个人答案与官方答案的一个对比(以及对测试用例的思考)相关推荐
- leetcode: 322.零钱兑换
322.零钱兑换 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/coin-change/ 给你一个整数数组 coins ,表示不同面额的硬币:以及一 ...
- LeetCode 322. 零钱兑换(DP)
文章目录 1. 题目信息 2. 解题 2.1 回溯穷举 2.2 动态规划 1. 题目信息 给定不同面额的硬币 coins 和一个总金额 amount. 编写一个函数来计算可以凑成总金额所需的最少的硬币 ...
- golang力扣leetcode 322.零钱兑换
322.零钱兑换 322.零钱兑换 题解 代码 322.零钱兑换 322.零钱兑换 题解 //state: dp[i]金额为i时所需最少硬币个数 //function: dp[i]=dp[i-n]+1 ...
- Java实现 LeetCode 322 零钱兑换
322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输 ...
- [LeetCode] 322.零钱兑换 五种方法讲解
322.零钱兑换 五种方法讲解 文章目录 322.零钱兑换 五种方法讲解 1 问题描述 2 问题分析 3 解决策略 3.1 递归-暴力解决 3.2 递归-加入存储 3.3 BFS 3.4 动态规划-自 ...
- LeetCode 322. 零钱兑换
322. 零钱兑换 难度 中等 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额. 计算并返回可以凑成总金额所需的 最少的硬币个数 .如果没有任何一种硬币组 ...
- Leetcode.322 零钱兑换
索引iii表示 amountamountamount 金额,dp[i]dp[i]dp[i] 表示最少 coinscoinscoins 个数. 递归 class Solution {int res = ...
- leetcode 322. 零钱兑换 思考分析
目录 1.题目 2.思路分析 3.参考链接 1.题目 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总 ...
- Leetcode 322.零钱兑换
Time: 20190906 Type: Medium 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币 ...
- 99. Leetcode 322. 零钱兑换 (动态规划-完全背包)
步骤一.确定状态: 确定dp数组及下标含义 dp数组是个amout+1的数组,dp[j]表示的是装满容量为j的背包所需要的最 少物品的个数 步骤二.推断状态方程: 对于当前物品i, 有两种选择决定了d ...
最新文章
- AES和TKIP的区别
- “妈妈打工,爸爸是盲人”小学生记错开学时间独自上学,原因心酸
- c++计算eigen随笔(3)-求逆
- 手把手教你写DI_3_小白徒手支持 Singleton 和 Scoped 生命周期
- ADF:使用HTTP POST方法进行URL任务流调用
- 分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view
- Confluent Platform 3.0支持使用Kafka Streams实现实时的数据处理(最新版已经是3.1了,支持kafka0.10了)...
- 如何屏蔽Canvas指纹跟踪
- Asp .Net Mvc在DeBug模式下设置自定义IP
- 小程序引入的echarts过大如何解决_小程序如何解决社区团购的痛点
- 易信七夕调查 八成情侣玩转社交软件
- linux 下 ethtool 修改网卡eeprom
- 任天堂(Nintendo)(什么是ps4,什么是ns(switch))
- 已有的事,后必再有。已行的事,后必再行。
- 65个最常见的面试问题与技巧性答复(面试技巧和注意事项),很不错,求职之前,多看看
- 浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法
- 交通大数据应用场景——高速落地检
- stm32——点亮LED
- 网络安全——数据库基础知识
- 层次分析法--matlab
热门文章
- IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boo
- 失落城堡 各种颜色药水、道具效果
- pycharm 如何设置文件头信息?信息模板 头文件 coding: utf-8
- python 计算 IOU
- Elections 思维
- 7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用
- 堆(heap)和栈(stack)的区别
- python期末考试编程题_Python_编程题期末必看
- sugar linux桌面,Sugar一个Linux的Distro和学习平台为孩子们 | MOS86
- 两个iphone怎么大量传照片_iphone12(或iphone12 pro)如何正确的转移手机数据?apple ID不通过,或者正在传输中持续无进度怎么办?...