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

全排列(回溯算法)

本文参考代码随想录

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

示例:

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

思路

在这里插入图片描述
排列是有序的,在排列问题中不需要startIndex;但排列问题需要一个used数组,标记已经选择的元素

当收集元素的数组path的大小达到和nums数组一样大的时候,说明找到了一个全排列,也表示到达了叶子节点,回溯终止。

class Solution {
private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, vector<bool> used){if(path.size() == nums.size()){result.push_back(path);return;}for(int i = 0;i < nums.size(); i++){if(used[i] == true) continue;path.push_back(nums[i]);used[i] = true;backtracking(nums, used);used[i] = false;path.pop_back();}}
public:vector<vector<int>> permute(vector<int>& nums) {result.clear();path.clear();vector<bool> used(nums.size(), false);backtracking(nums, used);return result;}
};
http://www.dtcms.com/a/312118.html

相关文章:

  • OLTP,OLAP,HTAP是什么,数据库该怎么选
  • 力扣-230.二叉搜索树中第K小的元素
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第6章 锁
  • Amazon Q Developer:AI 增强编码生产力的未来
  • Arpg第二章——流程逻辑
  • 第六章第二节 定时器定时中断 定时器外部时钟
  • 电子病历:现代HIS系统不可或缺的核心组成部分
  • 12:java学习笔记:多维数组1
  • yolo为什么可以作为目标检测框架?它的底层原理是什么?
  • 客流人数统计准确率↑22%:陌讯动态追踪融合算法实战解析
  • 【高等数学】第七章 微分方程——第七节 常系数齐次线性微分方程
  • OSPF综合实验(一)
  • 分享一个可以测试离线服务器性能的脚本
  • 八股训练--JUC
  • 包装类、日期等常用类型
  • C语言数据结构(5)双向链表
  • 深入剖析Nacos:云原生架构的基石
  • Python编程基础与实践:Python基础数据类型入门
  • 中国工程院郑裕国院士确认出席:2025第五届生物发酵营养源高峰论坛生物发酵展
  • CMake基础使用指南
  • QtC++ 调用 tesseract开源库 搭配 Opencv 实现文字识别:从tesseract库基本介绍到实际应用实现
  • 【华为OD机试】计算图形面积
  • 关于Egret引擎的一些思考
  • 单位长度上的RC参数
  • 【补题】Codeforces Round 715 (Div. 1) B. Almost Sorted
  • linux中pthread_t 的值与top -Hp中线程id值的区别
  • 装 饰 器 模 式
  • 深入 Go 底层原理(七):逃逸分析
  • C++ 11 模板萃取
  • 丑数-优先队列/三指针/动态规划