Leecode 46. 全排列 dfs+回溯

news/2024/7/20 21:59:32 标签: c++, leetcode, dfs, 深度优先

原题链接:Leecode 46. 全排列
在这里插入图片描述
解法一:

class Solution {
public:
    vector<vector<int>> res;
    vector<int> tmp;
    map<int,int> m;
    void dfs(int n,vector<int>& nums)
    {
        if(n==nums.size())
        {
            res.push_back(tmp);
            return ;
        }
        for(int i=0;i<nums.size();i++)
        {
            if(!m[nums[i]])
            {
                tmp.push_back(nums[i]);
                m[nums[i]]=1;
                dfs(n+1,nums);
                tmp.pop_back();
                m[nums[i]]=0;
            }
        }
    }
    vector<vector<int>> permute(vector<int>& nums) {
        int n=nums.size();
        dfs(0,nums);
        return res;
    }
};

解法二:swap

class Solution {
public:
    vector<vector<int>> res;
    void dfs(int n,vector<int>& nums)
    {
        if(n==nums.size())
        {
            res.push_back(nums);
            return ;
        }
        for(int i=n;i<nums.size();i++)
        {
            swap(nums[i],nums[n]);
            dfs(n+1,nums);
            swap(nums[i],nums[n]);
        }
    }
    vector<vector<int>> permute(vector<int>& nums) {
        dfs(0,nums);
        return res;
    }
};

http://www.niftyadmin.cn/n/1265020.html

相关文章

(Leetcode) 颠倒二进制位 - Python实现

题目&#xff1a; 颠倒二进制位&#xff1a;颠倒给定的 32 位无符号整数的二进制位。 示例: 输入: 00000010100101000001111010011100 输出: 00111001011110000010100101000000 解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596&#xff0c;…

Leecode 47. 全排列 II dfs+去重+回溯

原题链接&#xff1a;Leecode 47. 全排列 II class Solution { public:vector<vector<int>> res;vector<int> tmp;map<int,int> m;void dfs(int n,vector<int>& nums){if(nnums.size()){res.push_back(tmp);return ;}for(int i0;i<num…

(Leetcode) 帕斯卡三角形 - Python实现

题目&#xff1a; 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。Given a non-negative index k where k ≤ 33, return the kth index row of the Pascals triangle. 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出…

Leecode 51. N 皇后 递归+回溯

原题链接&#xff1a;Leecode 51. N 皇后 同样的问题&#xff08;有注释版&#xff09;&#xff1a;Acwing 3472. 八皇后 递归回溯优化 class Solution { public:vector<vector<string>> res;bool f[10];int p[10];void dfs(int n,int now){if(nown1){vector<…

python3安装scrapy报错:error: Microsoft Visual C++ 14.0 is required. Get it with Microsoft Visual C++

在安装爬虫框架包scrapy时&#xff0c;输入指令 &#xff1a;pip3 install scrapy 时出现下面的报错。 error: Microsoft Visual C 14.0 is required. Get it with "Microsoft Visual C Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools…

Leecode 52. N皇后 II 递归+回溯

原题链接&#xff1a;Leecode 52. N皇后 II 和这道题是一样的&#xff1a;Leecode 51. N 皇后 递归回溯 class Solution { public:bool f[10];int p[10];int res0;void dfs(int n,int now){if(nown){res;return ;}for(int i0;i<n;i){if(!f[i]){bool flagtrue;for(int j0…

Leecode 37. 解数独 dfs+回溯

原题链接&#xff1a;Leecode 37. 解数独 巧用pair<int,int>存储空格的位置&#xff1a; 解法一&#xff1a;数组存储 class Solution { public:int row[10][10];//行int col[10][10];//列int box[10][10];//宫vector<pair<int, int>> t;bool validfals…

Leecode 38. 外观数列 字符串

原题链接&#xff1a;Leecode 38. 外观数列 class Solution { public:string a[31];string fun(string s){int n1;string res"";int i1;for(;i<s.size();i){if(s[i]s[i-1])n;else {res(n0);ress[i-1];n1;}}res(n0);ress[i-1];return res;}string countAndSay(i…