为什么这个代码明明都递归三次了,总是结果为2啊,对于nums = [3,2,1,2,3,4]
class Solution:
def maxOperations(self, nums: List[int]) -> int:
n = len(nums)
if n < 2:
return 0
@cache
def dfs(start, end, aim):
if end - start < 2:
return 0
if nums[start] + nums[start + 1] == aim:
return 1 + dfs(start + 2, end, aim)
if nums[start] + nums[end] == aim:
return 1 + dfs(start + 1, end - 1, aim)
if nums[end] + nums[end - 1] == aim:
return 1 + dfs(start, end - 2, aim)
return 0
return max(dfs(0, n - 1, nums[0] + nums[1]), dfs(0, n - 1, nums[0] + nums[-1]), dfs(0, n - 1, nums[-1] + nums[-2]))