LeetCode46 全排列

前言

题目: 46. 全排列
文档: 代码随想录------全排列
编程语言: C++
解题状态: 成功解答!

思路

排列问题综合了之前的回溯问题,但没有新的东西,按部就班回溯就好。

代码

cpp 复制代码
class Solution {
private:
    vector<vector<int>> res;
    vector<int> path;
    void backtracking(vector<int>& nums, vector<bool>& used) {
        if (path.size() == nums.size()) {
            res.push_back(path);
        }

        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) {
        res.clear();
        path.clear();
        vector<bool> used(nums.size(), false);
        backtracking(nums, used);
        return res;
    }
};
  • 时间复杂度: O ( n ! ) O(n!) O(n!)
  • 空间复杂度: O ( n ) O(n) O(n)
相关推荐
X journey5 小时前
机器学习进阶(13):支持向量机SVM
算法·机器学习·支持向量机
洛水水5 小时前
【力扣100题】30.二叉树的直径
算法·leetcode·职场和发展
REDcker5 小时前
C++变量存储与ELF段布局详解 从const全局到rodata与nm_readelf验证实践
java·c++·面试
gihigo19986 小时前
Bezier曲线曲面生成算法
算法
刀法如飞6 小时前
Ontology本体论是什么数据结构?Palantir 技术原理介绍
数据结构·人工智能·ai编程·图论
平行侠7 小时前
024多精度大整数 - 突破硬件精度限制的任意精度运算
数据结构·算法
IronMurphy7 小时前
【算法四十五】139. 单词拆分
算法
王老师青少年编程8 小时前
csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:合并序列
c++·字符串·csp·高频考点·信奥赛·字符串排序·合并序列
洛水水8 小时前
【力扣100题】32.将有序数组转换为二叉搜索树
数据结构·算法·leetcode
handler018 小时前
UDP协议与网络通信知识点
c语言·网络·c++·笔记·网络协议·udp