# leetcode 46. Permutations
## permutation
```cpp
class Solution {
public:
vector<vector<int>> res;
void recur(vector<int> nums, vector<int> ans, int size){
if(!size){
res.push_back(ans);
return;
}
for(int i = 0; i < size; i++){
vector<int> temp = ans;
temp.push_back(nums[i]);
vector<int> t = nums;
t.erase(t.begin() + i);
recur(t, temp, size - 1);
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<int> ans;
recur(nums, ans, nums.size());
return res;
}
};
```
## swap
```cpp=
class Solution {
public:
void recur(vector<int>& nums, vector<vector<int>>& res, int size){
if(!size){
res.push_back(nums);
return;
}
for(int i = 0; i < size; i++){
swap(nums[i], nums[size - 1]);
recur(nums, res, size - 1);
swap(nums[i], nums[size - 1]);
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
recur(nums, res, nums.size());
return res;
}
};
```
###### tags: `leetcode` `c++`