题目描述:
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; } };