Description
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。
示例:
输入: [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]]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/increasing-subsequences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Solution
改题目明显是一个子集问题,只不过在将track加入res之前需要判断track是否是递增的。
class Solution:
def findSubsequences(self, nums: List[int]) -> List[List[int]]:
res = []
def check(track):
if len(track) <= 1: return False
for i in range(1, len(track)):
if track[i] < track[i-1]:
return False
return True
def backtrack(nums, track):
if check(track) and track not in res:
res.append(track[:])
for i in range(len(nums)):
track.append(nums[i])
backtrack(nums[i+1:], track)
track.pop()
backtrack(nums, [])
return res