Difficulty: Medium
Given a collection of numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[1,2,3]
, [1,3,2]
, [2,1,3]
, [2,3,1]
, [3,1,2]
, and [3,2,1]
.
class Solution {
vector<vector<int> > res;
void helper(vector<int> &nums,int n,int cur){
if(cur==n){
res.push_back(nums);
return;
}
for(int i=cur;i<n;++i){
if(cur!=i)
swap(nums[cur],nums[i]);
helper(nums,n,cur+1);
if(cur!=i)
swap(nums[cur],nums[i]);
}
}
public:
vector<vector<int>> permute(vector<int>& nums) {
if(nums.empty())
return res;
helper(nums,nums.size(),0);
return res;
}
};