一、题目
二、思路
1、不含重复元素的全排列
2、dfs遍历,start用来统计当前多少个元素
3、核心
swap(nums[start],nums[i]);
dfs(nums,size,start+1);
swap(nums[start],nums[i]);
三、代码
class Solution {
public:
vector<vector<int>>res;
vector<vector<int>> permute(vector<int>& nums) {
if(nums.empty()){
return res;
}
int size=nums.size();
dfs(nums,size,0);
return res;
}
void dfs(vector<int>& nums,int &size,int start){
if(start==size){
res.emplace_back(nums);
return;
}
for(int i=start;i<size;++i){
//交换nums[start]和nums[i]
swap(nums[start],nums[i]);
dfs(nums,size,start+1);
swap(nums[start],nums[i]);
}
}
};