当前位置: 首页 > news >正文

python之排列组合1

排列组合
不重复全排列
给定一个可包含重复数字的序列nums,按任意顺序返回所有不重复的全排列
示例1:
输入:nums=[1,1,2]
输出:[[1,1,2], [1,2,1], [2,1,1]]

输入:nums=[1,2,3]
输出:[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]

思路:
1,对所有的列表元素进行全排列
2,删除重复排列的元素

from typing import List  # 导入列List模块class Solution:  # 建立类def combination(self, nums: List[int]):  # 定义函数,并定义输入格式if len(nums) == 0:  # 如果为空列表则返回空[]return []elif len(nums) == 1:  # 如果列表只有一个项,则返回列表本身return [nums]  # 一定要用[nums]-返回列表,return nums则是返回列表的valueelse:ans = []  # 建立空列表,用于存储中间值for index, item in enumerate(nums):  # 遍历列表的索引及值rel = nums[:index] + nums[index + 1:]  # 提取除了当前项的以外的nums列表print('index:', index, 'item:', item)  # 打印输出索引及值,此输出为中间步骤输出方便理解,可以注释掉print('rel:', rel)  # 打印剔除当前项以外的列表,此输出为中间步骤输出方便理解,可以注释掉for j in self.combination(rel):  # 递归调用,ans.append(j + [item])  # 形成新的组合print(ans)  # 此输出为中间步骤输出方便理解,可以注释掉result = []  # 输出结果的空列表for i in ans:  # 遍历ans中间存储列表if i not in result:  # 去重,不同排列的组合存在result列表中,重复项目不保存result.append(i)return resultlist_1 = []
s = Solution()
print(s.combination(list_1))
print('----1')
list_1 = [1, 1]
print(s.combination(list_1))
print('----2')
list_1 = [1, 1, 2]
print(s.combination(list_1))
print('----3')

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RecyclerView的子项长按选择功能
  • Node.js运行环境搭建
  • 苹果CMS海洋CMS那个更容易被百度收录?苹果CMS站群
  • 记录小数点
  • 001 RabbitMQ入门及安装
  • 浏览器插件利器--allWebPluginV2.0.0.20-beta版发布
  • 2024 批量下载知乎回答/文章/想法/专栏/视频/收藏夹,导出 excel 和 pdf
  • 运维工程师面试整理-操作系统
  • C++——矩阵无重复行列取数问题
  • 力扣周赛:第415场周赛
  • 探索轻量级语言模型 GPT-4O-mini 的无限可能
  • JavaScript考核详解
  • 基于鸿蒙API10的RTSP播放器(五:拖动底部视频滑轨实现跳转)
  • 深度解析 MintRich 独特的价格曲线机制玩法
  • 【宠物小精灵之收服(待更新)】
  • [nginx文档翻译系列] 控制nginx
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 2017-08-04 前端日报
  • css的样式优先级
  • Druid 在有赞的实践
  • ECMAScript6(0):ES6简明参考手册
  • Github访问慢解决办法
  • JAVA SE 6 GC调优笔记
  • Java方法详解
  • java取消线程实例
  • k个最大的数及变种小结
  • oschina
  • Protobuf3语言指南
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 记一次删除Git记录中的大文件的过程
  • 开源SQL-on-Hadoop系统一览
  • 深入浅出webpack学习(1)--核心概念
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 原生Ajax
  • 怎样选择前端框架
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 从如何停掉 Promise 链说起
  • 移动端高清、多屏适配方案
  • ​configparser --- 配置文件解析器​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #单片机(TB6600驱动42步进电机)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (1)(1.9) MSP (version 4.2)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (23)Linux的软硬连接
  • (zt)最盛行的警世狂言(爆笑)
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (三分钟)速览传统边缘检测算子
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据