要编写一个函数,通过递归返回等于目标和的3个数字的所有组合,我们可以使用回溯算法。以下是一个用Python实现的示例:
def three_sum(nums, target):
def backtrack(start, target, path):
if len(path) == 3:
if sum(path) == target:
result.append(path[:])
return
for i in range(start, len(nums)):
if i > start and nums[i] == nums[i - 1]:
continue
if sum(path) + nums[i] > target:
break
path.append(nums[i])
backtrack(i + 1, target, path)
path.pop()
result = []
nums.sort()
backtrack(0, target, [])
return result
# 示例
nums = [-1, 0, 1, 2, -1, -4]
target = 0
print(three_sum(nums, target))
通过上述代码和解释,你应该能够理解如何使用递归和回溯算法来解决这个问题。
领取专属 10元无门槛券
手把手带您无忧上云