class Solution:
def findSubsequences(self, nums: List[int]) -> List[List[int]]:
def dfs(i, tmp):
if i == len(nums):
if len(tmp) >= 2:
res.append(tmp[:]) # 拷贝,tmp[:]而非tmp
return
# 选 nums[i]
if not tmp or nums[i]>=tmp[-1]: # 需满足递增
tmp.append(nums[i]) # 选nums[i]
dfs(i+1, tmp)
tmp.pop() # 回溯复原
# dfs(i+1, tmp+[nums[i]]) # 与以上三行等价
# 不选 nums[i]:
# 只有在nums[i]不等于前一项tmp[-1]的情况下才考虑不选nums[i]
# 即若nums[i] == tmp[-1],则必考虑选nums[i],不予执行不选nums[i]的情况
if not tmp or (tmp and nums[i] != tmp[-1]): # 避免重复
dfs(i+1, tmp)
res = []
dfs(0, [])
return res
相关文章
- 01背包-第k优解
- 编辑器插件数据保存之Serializable
- Python安装与环境配置,2022最新,超详细保姆级教程,python入门必备
- 神仙级python入门教程(非常详细),从零基础入门到精通,从看这篇开始!
- Python知识点:基于Python工具和技术,如何使用Truffle进行智能合约开发与部署
- Python | Leetcode Python题解之第491题非递减子序列-题解:
- Python基础08_类和对象(上)
- LeetCode刷题日记之贪心算法(一)-分发饼干
- Python--scipy.integrate.学习笔记
- java后端开发之登录页面重定向,利用302状态码和location实现,成功重定向到一个地方,失败重定向到一个地方