python - 为什么 leetcode 产生的结果与 pycharm 和 jupyter-notebook 不同?
问题描述
这听起来很奇怪,但我复制粘贴并使用相同的输入方法,我在我的机器上得到了正确的结果,但 leetcode 为相同的代码产生了不同的结果。这是 Q-377 的 leetcode 上的代码:
class Solution:
def combinationSum4(self, nums: List[int], target: int,memo={}) -> int:
if target in memo:
return memo[target]
if target==0:
return 1
if target<0:
return 0
count=0
for num in nums:
remainder=target-num
count+=self.combinationSum4(nums,remainder)
memo[target]=count
return count
这是我为 nums=[9] target=3 得到的结果
这是 jupyter 和 pycharm 的结果。相同的代码。我从leetcode复制:
我也试过这个解决方案有同样的问题:
解决方案
Leetcode 中的问题没有论据memo = {}
。这是来自 LC 代码。
def combinationSum4(self, nums: List[int], target: int) -> int:
由于您正在更改函数参数,因此它仅适用于 PyCharm 或 Jupyter。但是 Leetcode 只会传递所需的参数,即nums
andtarget
和not memo = {}
。您需要以 LC 的方式编写代码。
如果您打算更改函数的参数。您可以使用所需的参数编写单独的函数,并从combinationSum4()
函数内调用它。
这是代码:
class Solution:
def solve(self, nums, target, memo):
if target in memo:
return memo[target]
if target==0:
return 1
if target<0:
return 0
count=0
for num in nums:
remainder=target-num
count += self.solve(nums,remainder,memo)
memo[target]=count
return count
def combinationSum4(self, nums: List[int], target: int) -> int:
# Calling the function
return self.solve(nums, target, {})
推荐阅读
- linux - 重定向文件是在没有权限的情况下生成的
- python - Python - 在数据框中计算
- java - 如何更改请求 IP 以进行测试?
- java - 运行 lint 测试时出现 JAXBException
- karate - 当帖子 'content-type' 是 application/x-www-form-urlencoded 并且 * form field param= {
} - python - 有没有办法在 Azure Databricks 中动态地将参数传递给作业?
- c# - 如何使用 C# 将 `xmlns` 重命名为 TYPE
- python - django-celery 接收任务但不执行它
- javascript - elasticsearch中如何将url参数添加到elasticsearch UpdateByQuery
- google-apps-script - 当我在单元格 A1 中进行任何更改时,如何将单元格 A2 的值更改为“Today()”?