当前位置: 首页 > 知识库问答 >
问题:

为什么我的代码不能通过LeetCode 322 Coin Change的测试用例?

卢光远
2023-03-14

问题的链接:https://leetcode.com/problems/coin-change/
我的代码无法通过LeetCode的某些测试用例:

def coinChange(coins, amount):
    """
    :type coins: List[int]
    :type amount: int
    :rtype: int
    """
    coins.sort()
    #init the dp list
    dp = [0]+[float('inf')]*amount
    for i in coins:
        for j in range(i,amount+1):
            dp[j] = min(dp[j],int(j/i)+dp[j%i])

    if dp[-1]==float('inf'):
        return -1
    else:
        return dp[-1]


#test cases1,the result should be 3    
coins = [1, 2, 5]
amount = 11
print(coinChange(coins,amount))
#test cases2,the result should be 20  
coins = [186,419,83,408]
amount = 6249
print(coinChange(coins,amount))

对于第二个测试用例,它应该返回20,但现在它是-1。我不知道为什么我的代码可以在第一个测试用例上工作,但不能在第二个测试用例上工作<谢谢

共有1个答案

贡英华
2023-03-14

我不确定你想在dp[j]=min(dp[j],int(j/I)dp[j%I])中做什么,但它应该是dp[j]=min(dp[j],1 dp[j-I])。原因是,您可以将此硬币添加到amountj-i中,再添加一枚硬币(此硬币)即可获得amountj

 类似资料:
  • 我了解在lambda中捕获此(修改对象属性)的正确方法如下: 但我对我所看到的以下特点感到好奇: 我感到困惑(并希望得到回答)的奇怪之处在于,为什么以下方法有效: 以及为什么我无法通过引用明确捕获此内容:

  • 下面是一个链表的简单实现。我刚刚添加了相关代码。首先,我向列表中添加一些值,10,990和10000。当我搜索相同的值时,对于key=10,我得到true,但是对于key=990和key=10000得到false,尽管它应该是true。另外,如果我将第二个值从990更改为99,并搜索key=99,这一次我得到的是true。 我不确定是否使用泛型类型。我想我在那里做错了什么。因为如果我用int替换泛

  • 问题内容: 我正在做一个测试:比较cgo和纯Go函数的执行时间,每个函数运行一亿次。与Golang函数相比,cgo函数需要更长的时间,我对此结果感到困惑。我的测试代码是: 结果是: 结果表明,调用C函数比Go函数要慢。我的测试代码有问题吗? 我的系统是:mac OS X 10.9.4(13E28) 问题答案: 正如您所发现的那样,通过CGo调用C / C ++代码的开销相当大。因此,一般而言,最好

  • 我正在看这个leetcode挑战: 我的代码不能通过以下测试用例: 您的输入: 输出: 预期:

  • 我可以使用SQLDeveloper连接到远程数据库。 我试图从命令行使用sqlcl连接到同一个数据库,但我收到一个错误。 下面是我正在运行的命令: 我也尝试过: 以下是我收到的错误: 同样在SQLDeveloper中,我只是在“自定义jdbc url”下输入以下内容,它连接没有任何问题,所以我希望我可以使用相同的URL通过命令行连接,但到目前为止,它不起作用:

  • 包装呈现值;导入java。util。扫描仪; 公共类PresentValue{ }问题是写一个方法presentValue来执行此计算。该方法应接受未来值、年利率和年数作为参数。它应该返回现值,即您今天需要存入的金额。在一个程序中演示该方法,该程序允许用户试验公式项的不同值。 这里是公式P=F/(1r)^2