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

leetcode-21-回溯-全排列及其去重

一、[46]全排列

给定一个 没有重复 数字的序列,返回其所有可能的全排列。

示例:

  • 输入: [1,2,3]
  • 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]

其中,不需要使用startIndex

used数组,其实就是记录此时path里都有哪些元素使用了,一个排列里一个元素只能使用一次

相当于在每个分支上标记使用了那些元素,每个分支,元素只可以使用一次

二、[47]全排列2

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

示例 1:

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

示例 2:

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

1、去重一定要对元素进行排序,这样我们才方便通过相邻的节点来判断是否重复使用了。

2、树枝去重(更好理解)

if (i > 0 && nums[i] == nums[i - 1] && used[i - 1] == true) {continue;
}

3、树层去重(效率更高)

if (i > 0 && nums[i] == nums[i - 1] && used[i - 1] == false) {continue;
}

回溯总结:一般来说:组合问题和排列问题是在树形结构的叶子节点上收集结果,而子集问题就是取树上所有节点的结果。

引自:代码随想录 (programmercarl.com)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络——数据链路层(以太网扩展、虚拟局域网、高速以太网)
  • AI大模型对话(上下文)缓存能力
  • 计算机网络-IP组播基础
  • 业界数据架构的演变
  • Linux 系统管理4——账号管理
  • MySQL篇-SQL优化实战
  • vulnhub--IMF
  • 【AI原理解析】—支持向量机原理
  • requests 发送一个 json 格式的 post 请求
  • Node.js实现一个文章生成器
  • YOLOv8改进 | 注意力机制 | 结合静态和动态上下文信息的注意力机制
  • 2024年6月份找工作和面试总结
  • RabbitMQ 更改服务端口号
  • 力扣1895.最大的幻方
  • 51单片机嵌入式开发:3、STC89C52操作8八段式数码管原理
  • 《剑指offer》分解让复杂问题更简单
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • CSS居中完全指南——构建CSS居中决策树
  • eclipse(luna)创建web工程
  • flask接收请求并推入栈
  • Linux下的乱码问题
  • MySQL几个简单SQL的优化
  • ReactNativeweexDeviceOne对比
  • storm drpc实例
  • 对象管理器(defineProperty)学习笔记
  • 缓存与缓冲
  • 那些年我们用过的显示性能指标
  • 排序(1):冒泡排序
  • 山寨一个 Promise
  • 正则表达式小结
  • 自动记录MySQL慢查询快照脚本
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​Linux·i2c驱动架构​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # Panda3d 碰撞检测系统介绍
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #Linux(make工具和makefile文件以及makefile语法)
  • #LLM入门|Prompt#3.3_存储_Memory
  • #Spring-boot高级
  • (16)Reactor的测试——响应式Spring的道法术器
  • (2022 CVPR) Unbiased Teacher v2
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C语言)fgets与fputs函数详解
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (SpringBoot)第二章:Spring创建和使用
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十六)视图变换 正交投影 透视投影
  • (一)基于IDEA的JAVA基础10
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)为C# Windows服务添加安装程序
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • **PHP分步表单提交思路(分页表单提交)
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net core 控制台应用程序读取配置文件app.config