日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode-322. 零钱兑换个人答案与官方答案的一个对比(以及对测试用例的思考)

發布時間:2025/3/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,那么官方的代碼不久錯誤了么,果然,在我的操作下,出現了異常。

希望

希望測試用例不要太刁鉆把。。。。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Leetcode-322. 零钱兑换个人答案与官方答案的一个对比(以及对测试用例的思考)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。