题解 | #牛牛的三元组问题#回溯
牛牛的三元组问题
https://www.nowcoder.com/practice/72c6d735fb1144a2ba162976a4510839
这题一看就属于元素可重复,不可复选的回溯问题。
思路:对数组排序一趟,防止重复元素的原因造成复选
然后构造递归出口: 和为0且数组长度为3
接下来就是for+递归
class Solution:
def findTriplets(self , nums: List[int]) -> List[List[int]]:
# write code here
track = []
nums.sort()
res = []
cnt = 0
n = len(nums)
def backtrack(start):
nonlocal cnt
if len(track) == 3 and cnt == 0:
res.append(track[:])
return
for i in range(start, n):
if i > start and nums[i] == nums[i-1]:
continue
cnt += nums[i]
track.append(nums[i])
backtrack(i+1)
cnt -= track.pop()
backtrack(0)
return res
