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

LeetCode 全排列

思路:这是一道暴力搜索问题,我们需要列出答案的所有可能组合。

         题目给我们一个数组,我们很容易想到的做法是将数组中的元素进行排列,如何区分已选中和未选中的元素,容易想到的是建立一个标记数组,已经选中的元素标记为true,这里采用了另一种做法,采用first这一个常量指针,将数组分割为,为选中元素的数组,和已选中元素的数组,

          然后就是排序问题,在backtrack函数里有一个for循环,通过指针i来遍历未选中数组中的元素,得到所有可能的组合

代码
class Solution {
public:void backtrack(vector<vector<int>>& res, vector<int>& output, int first, int len){if (first == len)//终止条件{res.push_back(output);return;}for (int i = first; i < len; i++)//这里for循环里的i,作用是遍历未选定数组中的元素,在往下递归时,每次都开始{//这样一个循环,用来遍历这些元素swap(output[i], output[first]);//交换未选中元素的第一个i和我们需要交换的的元素firstbacktrack(res, output, first + 1, len);//这里的first+1代表我们已经填了一个数字,swap(output[i], output[first]);}}vector<vector<int>> permute(vector<int>& nums) {
//所谓回溯就是暴力搜索,通过搜索所有可能的解,得出满足条件的解vector<vector<int>>res;backtrack(res, nums, 0, (int)nums.size());return res;}
};

http://www.lryc.cn/news/390967.html

相关文章:

  • python实现支付宝异步回调验签
  • 注意!Vue.js 或 Nuxt.js 中请停止使用.value
  • Java:JDK、JRE和JVM 三者关系
  • Radio专业术语笔记
  • cocosCreator找出未用到的图片
  • 一览 Anoma 上的有趣应用概念
  • Spring Boot集成fastjson2快速入门Demo
  • Three.js机器人与星系动态场景(二):强化三维空间认识
  • java顺序查找
  • 提升学生职务执行力的智慧校园学工管理策略
  • 系统运维面试总结(shell编程)
  • 在数据库中,什么是主码、候选码、主属性、非主属性?
  • Linux-笔记 udev机制介绍
  • 深度学习基准模型Mamba
  • 面试专区|【40道移动端测试高频题整理(附答案背诵版)】
  • vb6多线程异步,VB.NET 全用API实现:CreateThread创建多线程,等待线程完成任务
  • Python中计算一个序列中特点值出现的数量,比如 [0,0,0,1,1,0,0,]中1的数量
  • gitignore
  • Adobe Premiere 视频编辑软件下载安装,pr全系列分享 轻松编辑视频
  • 大屏开发系列——Echarts的基础使用
  • 指挥中心操作台的形状及空间布局
  • Linux源码阅读笔记07-进程管理4大常用API函数
  • 后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok
  • 零基础入门怎么学习老挝语字母表?《老挝语翻译通》App真人发音教学,学习老挝语字母发音和词汇句子!
  • linux深度deepin基于rsync和apt-mirror同步软件源及构建本地内网源
  • 场景管理分析平台介绍
  • SQL Server和Oracle数据库的实时同步
  • Python中使用Oracle向量数据库实现文本检索系统
  • java考试题20道
  • 云仓的优势体现在哪里?