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

LeetCode 46. 全排列

 题目描述  

给定一个不含重复数字的数组 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.辅助数组

解题思路

       创建一个数组来记录是否已经访问的标记,i表示已经存了第几个数,j表示从第几个数开始存,回溯条件为i == n,回溯时候,on_path数组要恢复,最终返回的数组正好是N!个。

class Solution {
public:vector<vector<int>> permute(vector<int>& nums) {int n = nums.size();vector <vector <int>> ans;vector <int> path(n);vector <bool> on_path(n);auto dfs = [&](this auto && dfs,int i){if(i == n){ans.push_back(path);return;}for(int j = 0;j < n;j ++){if(!on_path[j]){path[i] = nums[j];on_path[j] = true;dfs(i + 1);on_path[j] = false;}}};dfs(0);return ans;}
};

        时间复杂度O(N·N!),空间复杂度O(N)

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

相关文章:

  • 洛谷 - P13982 数列分块入门 7(线段树解法 - 超详细版)
  • 页面PDF文件格式预览(不使用pdf.js)
  • Prompt Engineering 关键技能:精准掌控 LLM 输出的格式、内容与风格
  • 苹果(IOS)制作开发和发布证书
  • iOS 上架技术支持全流程解析,从签名配置到使用 开心上架 的实战经验分享
  • ISO 15765系列标准在车载诊断系统中的具体应用有哪些?
  • 人体含水量测量体验系统-VR节约用水互动游戏
  • 【ArcGIS软件教程】数据导出、CAD转换、属性表导出、裁剪、空间连接、修复几何
  • XYlease租赁商城小程序
  • 上海做网站建设平面设计线上培训班哪个好
  • 硬件语言:verilog(1)
  • 全排列——交换的思想
  • 【系统架构设计师(第2版)】六、数据库设计基础知识
  • LeetCode每日一题——缀点成线
  • COM组件访问权限错误的解决方案‌错误信息:检索 COM 类工厂中 CLSID 为{xxxx} 的组件失败,原因是出现以下错误:80070005 拒绝访问
  • 计算机组成原理 刘宏伟 第四章 存储器(下)
  • MS-YOLOv11:一种用于遥感图像中小目标检测的小波增强多尺度网络
  • 外贸企业网站设计公司龙中龙网站开发
  • 整站优化seo做电脑网站手机能显示不出来怎么办
  • Android设备GPU频点挡位路径
  • Vanna Text2SQL框架:用自然语言查询数据库的新方式
  • Android Studio新手开发第二十七天
  • ros中的Navigation导航系统
  • Python循环结构、控制语句及综合应用问答
  • Typescript - Tuple 元祖类型(语法 / 简单使用 / 不可变元组 / 合并多个元组)详细入门教程
  • 成就系统概述
  • 仓颉编程(10)类的定义
  • 常见的域名注册网站报纸做垂直门户网站
  • 东营网站建设推广市政工程中标查询网
  • Llinux自动安装chrome与chromedriver