javascript - 为什么 howSum 解决方案在 Javascript 中有效,但在 Python 中无效?(动态编程)
问题描述
这是Stack Overflow 上提出的这个问题的后续。
编写一个函数“howSum(targetSum, numbers)”,它接受一个 targetSum 和一个数字数组作为参数。
该函数应该返回一个数组,其中包含任何元素的组合,这些元素的总和正好是 targetSum。
如果没有组合到 targetSum,则返回 None。如果可能有多种组合,您可以返回任何一种。
我的解决方案的记忆python代码如下:
def howSum(targetSum, nums, memo = None):
if memo is None:
memo = {}
if targetSum in memo: return memo[targetSum]
if targetSum < 0: return None
if targetSum == 0: return []
for num in nums:
remainder = targetSum - num
remainderResult = howSum(remainder, nums)
if remainderResult is not None:
remainderResult.append(num)
memo[targetSum] = remainderResult
return memo[targetSum]
memo[targetSum] = None
return None
print(howSum(7, [2, 3])) # [3,2,2]
print(howSum(7, [5, 3, 4, 7])) # [4,3]
print(howSum(7, [2, 4])) # None
print(howSum(8, [2, 3, 5])) # [2,2,2,2]
print(howSum(300, [7,14]) # None
该算法有效,但对于最终的测试用例效率不高。实际上,运行时效率与蛮力解决方案没有什么不同。有什么问题?
解决方案
您似乎没有将memo
值传递给递归howSum(remainder, nums)
调用,因此您失去了在那里记忆的好处。
推荐阅读
- cherrypy - cherrypy 未通过 cherrpy.system.exit 退出
- python - 如何将实时数据抓取到谷歌表格中
- javascript - json 操作使用 react js
- python - 我正在尝试在 discord.py 中进行嵌入,但它总是抛出一个“等待”外部函数的错误
- android - 该视频不可用。Youtube API 错误。安卓工作室
- swift - Swift - 有没有办法在连接字符串中包含单引号 (')?
- wordpress - 我试图在 WordPress 中实现的超级自定义搜索表单
- c# - 我想在 C# 中实现客户端 Web 套接字连接
- algorithm - leetcode 212 word search II bugs using trie
- javascript - 在 JavaScript 中创建复制警报?