46. 全排列 力扣(中等) 容器或回溯

题目描述:

46. 全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

题源:https://leetcode-cn.com/problems/permutations/

代码:

class Solution {
public:
    vector<vector<int>> res;
    int l;
    void dfs(int k,vector<int> a)
    {
        if(k==l-1)  {res.push_back(a); return;}
        for(int i=k;i<l;i++)   // 从k 开始表示,自己本身算一种
        {
            swap(a[i],a[k]);
            dfs(k+1,a);
            swap(a[i],a[k]);
        }
    }
    vector<vector<int>> permute(vector<int>& nums) {
     // 法一,偷懒
     /*vector<vector<int>> res;
     sort(nums.begin(),nums.end());
     do
     {
         res.push_back(nums);
     }while(next_permutation(nums.begin(),nums.end()));
     return res;*/

     // 法二,回溯
     l=nums.size();
     dfs(0,nums);
      return res;
    }
};

 

上一篇:8.23考试总结(NOIP模拟46)[数数·数树·鼠树·ckw的树]


下一篇:leetcode-46 全排列