qidao123.com技术社区-IT企服评测·应用市场

标题: leetcode46全分列 [打印本页]

作者: 乌市泽哥    时间: 2025-5-1 18:26
标题: leetcode46全分列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全分列 。你可以 按恣意次序 返回答案。

示例 1:
  1. <strong>输入:</strong>nums = [1,2,3]
  2. <strong>输出:</strong>[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
复制代码
示例 2:
  1. <strong>输入:</strong>nums = [0,1]
  2. <strong>输出:</strong>[[0,1],[1,0]]
复制代码
示例 3:
  1. <strong>输入:</strong>nums = [1]
  2. <strong>输出:</strong>[[1]]
复制代码

提示:

步骤1:题目界说及分析

题目描述
给定一个不含重复数字的整数数组 nums,返回其所有可能的全分列。全分列指的是数组中所有元素的不同分列方式。题目要求输出所有分列,可以按照恣意次序返回。
输入输出条件

限制条件

界限条件

步骤2:题目分解及解题思绪

解题思绪: 要找出所有分列,我们可以采用回溯算法,回溯的焦点头脑是逐步选择每个位置的元素并进行递归搜索,当到达终点(即已选择了所有元素)时,就得到了一个分列。
回溯算法计划:

递归步骤:

时间复杂度与空间复杂度:


步骤3:代码实现

以下是基于回溯算法的 C++ 实现:
  1. class Solution {
  2. public:
  3.     // 回溯函数
  4. void backtrack(vector<int>& nums, vector<int>& path, vector<bool>& used, vector<vector<int>>& result) {
  5.     // 终止条件:当路径长度等于nums长度时,表示找到了一个排列
  6.     if (path.size() == nums.size()) {
  7.         result.push_back(path);
  8.         return;
  9.     }
  10.    
  11.     // 遍历nums数组,进行回溯
  12.     for (int i = 0; i < nums.size(); i++) {
  13.         // 剪枝条件:如果当前元素已经使用过,跳过
  14.         if (used[i]) continue;
  15.         
  16.         // 做选择
  17.         path.push_back(nums[i]);
  18.         used[i] = true;
  19.         
  20.         // 递归生成排列
  21.         backtrack(nums, path, used, result);
  22.         
  23.         // 撤销选择
  24.         path.pop_back();
  25.         used[i] = false;
  26.     }
  27. }
  28. vector<vector<int>> permute(vector<int>& nums) {
  29.     vector<vector<int>> result;
  30.     vector<int> path;
  31.     vector<bool> used(nums.size(), false);  // 用于标记元素是否被使用
  32.     backtrack(nums, path, used, result);
  33.     return result;
  34. }
  35. };
复制代码
代码注释:

步骤4:启发与总结

通过这个题目,我们可以获得以下启发:

步骤5:实际应用示例

实际应用场景
回溯算法中的分列生成不但适用于底子的算法题,还可以广泛应用于多个实际题目中。比方:

示例
假设在某个电子商务平台中,存在多个商品,商家盼望为每个商品选择一个配送方式,并且盼望了解所有可能的配送方案(即分列)。通过回溯算法,我们可以生成所有配送方案,并进行分析,优化物流调度策略。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4