非递减序列(python)

思路:

非递减子序列 ,也是一种子集问题,也需要在进入递归就收集答案。这里需要注意,因为要求是序列,所以不能排序,这里需要使用set()在树层去重。同时,对于当前遍历到的元素,不能比path里面的小,如果小,则跳过该元素的搜索。

复制代码
#非递减序列 也是一种子集问题
#有顺序要求,所以不能排序,要用set在树层去重
def f(nums):
    res=[]
    path=[]
    n=len(nums)
    def dfs(start_idx):
        if len(path)>1:  #长度大于2才收集
            res.append(path[:])
        st=set()
        for i in range(start_idx,n):
            if (path and nums[i]<path[-1]) or nums[i] in st:  #去重逻辑
                continue
            st.add(nums[i])
            path.append(nums[i])
            dfs(i+1)
            path.pop()
    dfs(0)
    print(res)
    return res
def main():
    nums=list(map(int,input().split()))
    f(nums)
if __name__=="__main__":
    main()
相关推荐
傲笑风6 小时前
【openvino】tinybert基于openvino服务化部署(四)
人工智能·python·自然语言处理·nlp·bert·openvino
维基框架6 小时前
WIKI 知识库 v1.1.1 正式发布
人工智能·python
谢白羽10 小时前
SGLang的AWQ量化笔记
笔记·python·sglang
迷迭香yy10 小时前
基金档案数据工程实战从收入分析到持仓穿透的Python解析 IG50免费开源股票数据API接口
开发语言·python
清水白石00810 小时前
Python 类型设计深度解析:TypedDict 能否替代 dataclass?从 JSON 数据边界到 API 设计的最佳实践
java·python·json
️学习的小王11 小时前
Git项目提交忽略文件怎么做?以Python项目为例,详解.gitignore
git·python·elasticsearch
前端 贾公子11 小时前
第09章:上下文与记忆 (6)
开发语言·前端·python
evans在进步11 小时前
Java 常用设计模式入门:建造者、工厂、单例、外观与代理
java·python·设计模式
jayson.h12 小时前
PDF 合并+添加页码 相关库、类、函数
开发语言·前端·python
典典分享指南12 小时前
用飞书多维表格搭建内容管理看板
java·python·r语言·composer·symfony