Given a collection of distinct integers, return all possible permutations.
Example:
Input: [1,2,3] Output: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
方法一:直接用next_permutation函数
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>>result;
sort(nums.begin(),nums.end());
do{
result.push_back(nums);
}while(next_permutation(nums.begin(),nums.end()));
return result;
}
};
方法二:递归
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>>result;
dfs(nums,0,result);
return result;
}
void dfs(vector<int>& nums,int begin,vector<vector<int>>&result){
if(begin == nums.size()-1)
result.push_back(nums);
for(int i=begin;i<nums.size();i++){
swap(nums[begin],nums[i]);
dfs(nums,begin+1,result);
swap(nums[begin],nums[i]);
}
return;
}
};