题目如下:
解题思路:
递归 + 回溯。
代码如下:
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
int l = nums.size();
backtrackpermute(0, l, nums, res);
return res;
}
void backtrackpermute(int k, int n, vector<int>& nums, vector<vector<int>> res){
if(k == n){
res.push_back(nums);
return ;
}
for(int i = k; i < n; i++){
swap(nums[k], nums[i]);
backtrackpermute(k+1, n, nums, res); //递归
swap(nums[k], nums[i]); //回溯
}
}
};