题目链接

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. 零钱兑换个人答案与官方答案的一个对比(以及对测试用例的思考)相关推荐

  1. leetcode: 322.零钱兑换

    322.零钱兑换 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/coin-change/ 给你一个整数数组 coins ,表示不同面额的硬币:以及一 ...

  2. LeetCode 322. 零钱兑换(DP)

    文章目录 1. 题目信息 2. 解题 2.1 回溯穷举 2.2 动态规划 1. 题目信息 给定不同面额的硬币 coins 和一个总金额 amount. 编写一个函数来计算可以凑成总金额所需的最少的硬币 ...

  3. golang力扣leetcode 322.零钱兑换

    322.零钱兑换 322.零钱兑换 题解 代码 322.零钱兑换 322.零钱兑换 题解 //state: dp[i]金额为i时所需最少硬币个数 //function: dp[i]=dp[i-n]+1 ...

  4. Java实现 LeetCode 322 零钱兑换

    322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输 ...

  5. [LeetCode] 322.零钱兑换 五种方法讲解

    322.零钱兑换 五种方法讲解 文章目录 322.零钱兑换 五种方法讲解 1 问题描述 2 问题分析 3 解决策略 3.1 递归-暴力解决 3.2 递归-加入存储 3.3 BFS 3.4 动态规划-自 ...

  6. LeetCode 322. 零钱兑换

    322. 零钱兑换 难度 中等 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额. 计算并返回可以凑成总金额所需的 最少的硬币个数 .如果没有任何一种硬币组 ...

  7. Leetcode.322 零钱兑换

    索引iii表示 amountamountamount 金额,dp[i]dp[i]dp[i] 表示最少 coinscoinscoins 个数. 递归 class Solution {int res = ...

  8. leetcode 322. 零钱兑换 思考分析

    目录 1.题目 2.思路分析 3.参考链接 1.题目 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总 ...

  9. Leetcode 322.零钱兑换

    Time: 20190906 Type: Medium 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币 ...

  10. 99. Leetcode 322. 零钱兑换 (动态规划-完全背包)

    步骤一.确定状态: 确定dp数组及下标含义 dp数组是个amout+1的数组,dp[j]表示的是装满容量为j的背包所需要的最 少物品的个数 步骤二.推断状态方程: 对于当前物品i, 有两种选择决定了d ...

最新文章

  1. AES和TKIP的区别
  2. “妈妈打工,爸爸是盲人”小学生记错开学时间独自上学,原因心酸
  3. c++计算eigen随笔(3)-求逆
  4. 手把手教你写DI_3_小白徒手支持 Singleton 和 Scoped 生命周期
  5. ADF:使用HTTP POST方法进行URL任务流调用
  6. 分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view
  7. Confluent Platform 3.0支持使用Kafka Streams实现实时的数据处理(最新版已经是3.1了,支持kafka0.10了)...
  8. 如何屏蔽Canvas指纹跟踪
  9. Asp .Net Mvc在DeBug模式下设置自定义IP
  10. 小程序引入的echarts过大如何解决_小程序如何解决社区团购的痛点
  11. 易信七夕调查 八成情侣玩转社交软件
  12. linux 下 ethtool 修改网卡eeprom
  13. 任天堂(Nintendo)(什么是ps4,什么是ns(switch))
  14. 已有的事,后必再有。已行的事,后必再行。
  15. 65个最常见的面试问题与技巧性答复(面试技巧和注意事项),很不错,求职之前,多看看
  16. 浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法
  17. 交通大数据应用场景——高速落地检
  18. stm32——点亮LED
  19. 网络安全——数据库基础知识
  20. 层次分析法--matlab

热门文章

  1. IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boo
  2. 失落城堡 各种颜色药水、道具效果
  3. pycharm 如何设置文件头信息?信息模板 头文件 coding: utf-8
  4. python 计算 IOU
  5. Elections 思维
  6. 7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用
  7. 堆(heap)和栈(stack)的区别
  8. python期末考试编程题_Python_编程题期末必看
  9. sugar linux桌面,Sugar一个Linux的Distro和学习平台为孩子们 | MOS86
  10. 两个iphone怎么大量传照片_iphone12(或iphone12 pro)如何正确的转移手机数据?apple ID不通过,或者正在传输中持续无进度怎么办?...