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; } };