当前位置: 首页 > 后端技术 > Python

力扣-0491.递增子序列[Python]

时间:2023-03-26 02:02:43 Python

LeetCode0491.递增子序列[Medium][Python][DFS]ProblemLeetCode给定一个整数数组,你的任务是找到给定数组的所有不同可能递增子序列,以及递增子序列应至少为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]]约束:给定数组的长度不会超过15.integer的取值范围给定的数组是[-100,100]。给定的数组可能包含重复项,并且两个相等的整数也应视为递增序列的特例。问题是给定一个整数数组,你的任务是找到这个数组的所有长度至少为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]]说明:给定数组的长度不会超过15。数组中整数的范围是[-100,100]。鉴于数组可能包含重复的数字,相等的数字应该被认为是递增的情况。思路DFSPython3代码类解决方案:deffindSubsequences(self,nums:List[int])->List[List[int]]:#解决方案一:DFSres=[]defdfs(nums,tmp):iflen(tmp)>1:res.append(tmp)cur_pres=set()#循环nums的索引值对forinx,iinenumerate(nums):#当前值已经遍历ifiincur_pres:continue#当前值可以如果不是tmp或i>=tmp[-1],则添加以形成增量子序列:cur_pres.add(i)dfs(nums[inx+1:],tmp+[i])dfs(nums,[])returnresGitHub链接Python