46. Permutations
problem description
Input: [1,2,3]
Output:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]algorithm thought
code
algorithm thought
Last updated
Input: [1,2,3]
Output:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]Last updated
//first time
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<bool> mark(nums.size(),false);
vector<vector<int>> res;
vector<int> tmp;
per(nums,res,tmp,mark);
return res;
}
void per(vector<int>& nums,vector<vector<int>>& res,vector<int> tmp,vector<bool>& mark){
if(tmp.size()==nums.size()){
res.push_back(tmp);
return;
}
for(int i=0;i<nums.size();++i){
if(mark[i]==false){
mark[i]=true;
tmp.push_back(nums[i]);
per(nums,res,tmp,mark);
tmp.pop_back();
mark[i]=false;
}
}
}
};
//second
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
per(nums,res,0,nums.size());
return res;
}
void per(vector<int>& nums,vector<vector<int>>& res,int i,int j){
if(i==j-1){
res.push_back(nums);
return ;
}
for(int k=i;k<j;++k){
swap(nums[i],nums[k]);
per(nums,res,i+1,j);
swap(nums[i],nums[k]);
}
}
};