LeetCode热题100 全排列

题目描述

给定一个不含重复数字的数组 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 <= numsi <= 10

nums 中的所有整数 互不相同

思路

dfs模板,详细见代码。

代码

cpp 复制代码
class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        // 获取长度
        int n = nums.size();
        // 存储全部答案
        vector<vector<int>>ans;
        // 判断某个数字是否已经在当前组的答案中
        vector<bool>st(n, false);
        // 每组的答案
        vector<int>res;

        for(int i = 0; i < n; ++i)
        {
            if(!st[i])
            {
                st[i] = true;
                res.push_back(nums[i]);
                dfs(n, nums, st, res, ans);
                st[i] = false;
                res.pop_back();
            }
        }
        return ans;
    }

    void dfs(int n, vector<int> &nums, vector<bool> &st, vector<int> &res, vector<vector<int>> &ans)
    {
        if(res.size() == n)
        {
            ans.push_back(res);
            return;
        }

        for(int i = 0; i < n; ++i)
        {
            if(!st[i])
            {
                st[i] = true;
                res.push_back(nums[i]);
                dfs(n, nums, st, res, ans);
                st[i] = false;
                res.pop_back();
            }
        }
    }

};
相关推荐
lisw05几秒前
互联网上的数据结构可视化!
数据结构·信息可视化
旖旎夜光31 分钟前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
扶尔魔ocy2 小时前
【QT入门到晋级】用开源的自定义控件开发
c++·qt·自定义控件
AiNightVision2 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.3332 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
akinggw3 小时前
libsherpacore - 基于 sherpa-onnx 的 C++ 语音交互静态库
c++·交互·语音识别
xiaoye-duck3 小时前
《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(中):全量响应实现和测试
网络·c++·语言模型·chatgpt
小郎君6583 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
JJJennie7774 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
東隅已逝,桑榆非晚4 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法