回溯:如何更改以下代码



如何更改以下代码,以便不必将set1和set2传递给函数?

这个函数发现数组是否可以划分为两个子集,使得两个子集中的元素之和相等。

def canPartition(self, nums: List[int]) -> bool:
def backtrack(i, set1, set2):
if i == len(nums):
if set1 == set2:
return True
else:
return False

path1 = backtrack(i+1, set1 + nums[i], set2)
path2 = backtrack(i+1, set1, set2 + nums[i])
return path1 or path2

return backtrack(0, 0, 0)

我想你的意思是;在原始呼叫中";。只需使用默认参数。

def canPartition(self, nums: List[int]) -> bool:
def backtrack(i, set1=0, set2=0):
if i == len(nums):
return set1 == set2

path1 = backtrack(i+1, set1 + nums[i], set2)
path2 = backtrack(i+1, set1, set2 + nums[i])
return path1 or path2

return backtrack(0)

最新更新