【发布时间】:2020-10-18 09:44:25
【问题描述】:
我正在研究一个名为 house robber 的 DP 问题,我已经使用 DP 方法解决了这个问题,但我最初的想法是使用以下递归函数:
def rec(self, start, possible):
if len(possible) == 0:
return start
money = start
for i, num in enumerate(possible):
nextMoney = self.rec(start + num, possible[i+2:])
money = max(money, nextMoney)
return money
def rob(self, nums: List[int]) -> int:
# Base Case
if(len(nums) == 0):
return 0
elif len(nums) == 1:
return nums[0]
path1 = self.rec(nums[0], nums[2:])
path2 = self.rec(nums[1], nums[3:])
# Recursion
return max(path1, path2)
我的 DP 解决方案是 O(n),但我正在努力确定上述算法的时间复杂度。我的直觉说它的指数顺序为 log(n) = O(n ^ log (n))
如果有人能在这里指出正确的方向,我将不胜感激。谢谢。
【问题讨论】:
标签: python algorithm performance recursion