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

LeetCode46. 全排列(2024秋季每日一题 57)

给定一个不含重复数字的数组 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 < = n u m s . l e n g t h < = 6 1 <= nums.length <= 6 1<=nums.length<=6
− 10 < = n u m s [ i ] < = 10 -10 <= nums[i] <= 10 10<=nums[i]<=10
nums 中的所有整数 互不相同


思路:

  • dfs 遍历每个位置可能的数字
  • 对于每个位置,枚举还没被使用的数字
  • 在当前位置填充数字,并标记当前数字已经使用过,继续递归到下一层
  • 递归完后,回溯到之前的状态,继续枚举下一个数字
  • 如果所有位置都枚举了,则将最后一层的结果加到最终结果里
class Solution {
public:vector<vector<int>> res;vector<int> ans;vector<vector<int>> permute(vector<int>& nums) {dfs(nums, 0);return res;}void dfs(vector<int>& nums, int state){if(ans.size() == nums.size()){res.push_back(ans);return;}for(int i = 0; i < nums.size(); i++){if(state >> i & 1) continue;ans.push_back(nums[i]);dfs(nums, 1 << i | state);ans.pop_back();}}
};
http://www.lryc.cn/news/477265.html

相关文章:

  • SpringBoot新闻稿件管理系统:架构与实现
  • MinIO讲解和java应用案例示范
  • 区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第1套 区块链系统设计与运维部分
  • yaml文件编写
  • TOEIC 词汇专题:娱乐休闲篇
  • 驱动TFT-1.44寸屏(ST7735)显示器
  • 鸿蒙HarmonyOS NEXT一多适配技术方案
  • golang 中map使用的一些坑
  • cordova 离线打包Android -Linux
  • 【python】OpenCV—findContours(4.3)
  • 前端通过nginx部署一个本地服务的方法
  • Linux:防火墙和selinux对服务的影响
  • 从 vue 源码看问题 — vue 如何进行异步更新?
  • 【go从零单排】go中的基本数据类型和变量
  • 标签之文字排版,图片,链接,音视频(HTML) 基础版
  • 基于SpringBoot+Gpt个人健康管家管理系统【提供源码+答辩PPT+参考文档+项目部署】
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第一题
  • 【Windows修改Docker Desktop(WSL2)内存分配大小】
  • 阿里云-部署CNI flannel集群网络
  • favicon是什么文件?如何制作网站ico图标?
  • Linux云计算个人学习总结(一)
  • DCRNN解读(论文+代码)
  • 雷池社区版新版本功能防绕过人机验证解析
  • 一文详解开源ETL工具Kettle!
  • 《IMM交互式多模型滤波MATLAB实践》专栏目录,持续更新……
  • 解决数据集中xml文件类别标签的首字母大小写不一致问题
  • 手边酒店多商户版V2源码独立部署_博纳软云
  • 32位汇编——通用寄存器
  • vue3项目中实现el-table分批渲染表格
  • 开源办公软件 ONLYOFFICE 深入探索