46.全排列

思路

  • 深度搜索+回溯
  • 2021.03.27
class Solution {
public:
    int n;
    vector<vector<int>> res;
    vector<int> temp;
    vector<bool> st;
    vector<vector<int>> permute(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        n = nums.size();
        temp.resize(n);
        st.resize(n);
        dfs(nums, 0);    
        return res;
    }
    void dfs(vector<int>&nums, int u){
        if(u == n){
            res.push_back(temp);
            return;
        }
        
        for(int i = 0; i < n; i++){
            if(!st[i]){
                st[i] = true;
                temp[i] = nums[u];
                dfs(nums, u+1);
                st[i] = false;
            }
        }
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • https://leetcode-cn.com/problems/permutations/[https://le...
    yaoqi7777阅读 164评论 0 0
  • 题目描述(中等难度) 描述的很简单,就是给定几个数,然后输出他们所有排列的可能。 解法一 插入 这是自己开始想到的...
    windliang阅读 293评论 0 0
  • 更多精彩内容,请关注【力扣中等题】。 题目 难度:★★★☆☆类型:数学方法:回溯法 题目 给定一个没有重复数字的序...
    玖月晴阅读 26,873评论 0 5
  • 借鉴 上面的思路是递归的思路,下面是采用回溯的思路,将结果作为参数传递下去 由于别的语言没有切片这么方便的操作,所...
    mztkenan阅读 114评论 0 0
  • 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例:输入: [1,2,3]输出:[[1,2,3], [1,...
    pao哥阅读 137评论 1 1