[491][中等][DFS] 递增子序列
题目描述
输入: [4, 6, 7, 7]
输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]解题思路
DFS
最后更新于
输入: [4, 6, 7, 7]
输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]最后更新于
class Solution:
def findSubsequences(self, nums: List[int]) -> List[List[int]]:
n = len(nums)
res = set()
@lru_cache(None)
def dfs(temp, i):
if i >= n:
return
last = int(temp.split(';')[-1])
if nums[i] >= last:
new_temp = temp + ";{}".format(str(nums[i]))
res.add(new_temp)
dfs(new_temp, i + 1)
dfs(temp, i + 1)
else:
dfs(temp, i + 1)
for j in range(n):
dfs(str(nums[j]), j + 1)
return [[int(t) for t in single.split(';')]for single in res]