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

LeetCode热题100——46. 全排列

https://leetcode.cn/problems/permutations/description/?envType=study-plan-v2&envId=top-100-liked

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

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

示例 2:
输入:nums = [0,1]
输出:[[0,1],[1,0]]

示例 3:
输入:nums = [1]
输出:[[1]]

提示:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
nums 中的所有整数 互不相同

题解

使用树形结构来排列,减掉不符合要求的枝丫,再回溯到上一个元素继续遍历
在这里插入图片描述

public List<List<Integer>> permute(int[] nums) {List<List<Integer>> res = new ArrayList<>();List<Integer> path = new ArrayList<>();dfs(nums, res, path);return res;}private  void dfs(int[] nums, List<List<Integer>> res, List<Integer> path) {if (path.size() == nums.length) {// 注意这里要new一个集合把原来的数据拷贝到新集合res.add(new ArrayList<>(path));return;}for (int i = 0; i < nums.length; i++) {// 减枝, 如果出现过某个元素直接遍历下一个if (path.contains(nums[i])) continue;path.add(nums[i]);dfs(nums, res, path);path.remove(path.size() - 1);}}

复杂度

时间复杂度 O(n*n!)
全排列的每条路一共 n!,每次 递归内部 new ArrayList<>(path) 或者 path.contains(nums[i]) 要n次,所以一共是 O(n * n!)

空间复杂度 O(n)
如果只输出而不保存所有结果(使用回溯+原地交换):
递归栈深度为 n,每层一个调用,空间复杂度为:O(n)。

如果保存所有结果到列表中:
需要存储 n! 个排列,每个排列长度为 n,所以是:
空间复杂度为:O(n × n!)。

http://www.dtcms.com/a/304245.html

相关文章:

  • 研电赛-基于GD32的纳型无人机AI追踪系统1
  • vue相关的拖拉拽官网
  • minio安装 windows系统
  • C语言第六章函数递归
  • Linux文件归档和备份
  • Qt 多线程网络编程实战
  • iOS 能耗·电池·电量监控实战指南:如何全面查看与优化 App 电能消耗
  • VTK开发笔记(一):VTK介绍,Qt5.9.3+VS2017x64+VTK8.2编译
  • AI驱动的浏览器自动化革命:Claude Code + BrowserCat MCP深度实践指南
  • 【MySQL学习|黑马笔记|Day2】SQL|DML、DGL、DCL,函数,约束
  • Python 打造 Excel 到 JSON 转换工具:从开发到打包全攻略
  • Java后端开发数据校验工作
  • Qt 嵌入式开发环境搭建
  • .NET测试平台Parasoft dotTEST在汽车电子行业的核心功能及应用
  • PCIE4.0/5.0/DDR4/DDR5使用以及布局布线规则-集萃
  • python cli命令 cli工具命令 自定义cli命名 开发 兼容 window、mac、linux,调用示例
  • ath12k_mac_op_tx到数据包发送的完整调用路径
  • Java把word转HTML格式
  • Hexo+Shoka 博客搭建保姆级教程
  • 鸿蒙Harmony-自定义List组件,解决List组件手势滑动点击卡住问题
  • Android JNI 语法全解析:从基础到实战
  • 预过滤环境光贴图制作教程:第二步 - 生成环境贴图图集
  • 音频算法基础(语音识别 / 降噪 / 分离)
  • p5.js 三角形triangle的用法
  • 中国贸促会融媒体中心出海活动负责人、出海星球创始人莅临绿算技术
  • FSMC的配置和应用
  • python类里面的魔法方法
  • 某雷限制解除:轻松获取原始下载链接,支持多任务转换
  • 运维笔记:HTTP 性能优化
  • python学习DAY26打卡