这个题目和之前回溯的固有思维不一样
class Solution:
def findSubsequences(self, nums):
def backtracking(path, start):
if len(path) >=2:
res.append(path[:])
uset = set()
for i in range(start, n): # 递归的终止条件为start大于n时
if (nums[i] in uset) or (path and nums[i] < path[-1]):
continue
# 1、if的第一个条件,将本层有相同元素的进行剪枝,和之前排好序有相同的元素不一样
# 2、如果nums后一个数比path中最后一个数小,那么进行剪枝
uset.add(nums[i])
path.append(nums[i])
backtracking(path, i + 1)
path.pop()
n = len(nums)
res = []
backtracking([], 0)
return res
707

被折叠的 条评论
为什么被折叠?



