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

LeetCode-46. 全排列

1、题目描述:

给定一个不含重复数字的数组 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 中的所有整数 互不相同

2、代码:

#include <algorithm>
#include <vector>
using namespace std;class Solution
{
public:vector<vector<int>> permute(vector<int>& nums){vector<vector<int>> result;backtrack(nums, 0, result);return result;}void backtrack(vector<int>& nums, int start, vector<vector<int>>& result){if (start == nums.size()) {// 找到一个排列,加入结果result.push_back(nums);return;}for (int i = start; i < nums.size(); ++i) {swap(nums[start], nums[i]);backtrack(nums, start + 1, result);swap(nums[start], nums[i]);}}
};

3、解题思路:

全排列问题要求生成所有可能的元素排列。回溯法是一种有效的解决方法,其核心思想是通过递归和回溯来探索所有可能的路径。具体步骤如下:

  1. ​选择路径​​:从第一个位置开始,依次将每个位置的元素与当前位置交换,固定当前元素。
  2. ​递归探索​​:对剩余未固定的元素递归执行相同操作,直到所有元素都被固定。
  3. ​回溯恢复​​:递归返回后,撤销之前的交换操作,恢复原状,以便进行下一次选择。

4、代码解释

  • ​主函数 permute​:初始化结果容器并调用回溯函数。
  • ​回溯函数 backtrack​:
    • ​终止条件​​:当 start 等于数组长度时,表示所有元素已固定,当前数组为一个排列,加入结果。
    • ​循环遍历​​:从 start 开始,将每个元素交换到当前位置。
    • ​递归调用​​:处理下一个位置,即 start + 1
    • ​回溯恢复​​:撤销交换操作,确保后续循环的正确性。
http://www.xdnf.cn/news/106903.html

相关文章:

  • 洛谷P3196C语言题解
  • PHP CURL发送POST请求(支持HEADER参数配置)
  • Kubernetes 集群内访问外部服务的三种实践方案
  • 软件工程的13条“定律”:从Hyrum定律到康威定律,再到Zawinski定律
  • 锤子线,买入准确概率是多少
  • leetcode-数组
  • Retrofit框架分析(二):注解、反射以及动态代理,Retrofit框架动态代理的源码分析
  • bert学习
  • AIGC的伦理困境:机器生成内容是否该被监管?
  • 动态脚本引擎QLExpress,实现各种复杂的业务规则
  • 深度学习驱动的车牌识别:技术演进与未来挑战
  • 创建第一个Spring Boot项目
  • pytorch(gpu版本安装)
  • Javase 基础入门 —— 04 继承
  • 数据结构与算法学习笔记(Acwing提高课)----动态规划·数字三角形
  • openssh-10.0p1用于修复CVE-2025-26465、CVE-2025-26466
  • java springBoot 整合 扣子cozeAI 智能体 对话
  • AI 人工智能模型:从理论到实践的深度解析⚡YQW · Studio ⚡【Deepseek】【Chat GPT】
  • python函数与模块
  • PyCharm 链接 Podman Desktop 的 podman-machine-default Linux 虚拟环境
  • YOLO学习笔记 | 从YOLOv5到YOLOv11:技术演进与核心改进
  • JVM学习笔记
  • Spark论述及其作用
  • 五、实现隐藏(Hiding the Implementation)
  • 记录一次OGG进程abended,报错OGG-01431、OGG-01003、OGG-01151、OGG-01296问题的处理
  • Windows 同步技术-一次性初始化
  • Discuz!与DeepSeek的AI融合:打造智能网址导航新体验——以“虎跃办公”为例
  • 15.FineReport动态展示需要的列
  • 运维案例:让服务器稳定运行,守护业务不掉线!
  • 块压缩与图片压缩优缺点对比