题解 | #牛牛的三元组问题#回溯
牛牛的三元组问题
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