题目描述
思路分析
dfs简单暴搜下
(和第47题相比,不用排序也不用dfs中判重)
代码实现
class Solution {
public:
vector<vector<int>> ans;
vector<int> path;
vector<bool> st;
vector<vector<int>> permute(vector<int>& nums) {
path=vector<int>(nums.size());
st=vector<bool>(nums.size());
//sort(nums.begin(),nums.end());
dfs(nums,0);
return ans;
}
void dfs(vector<int>& nums,int u){
if(u==nums.size()){
ans.push_back(path);
return;
}
for(int i=0;i<nums.size();i++){
if(st[i]) continue;
//if(i&&nums[i-1]==nums[i]&&!st[i-1]) continue;
st[i]=true;
path[u]=nums[i];
dfs(nums,u+1);
st[i]=false;
}
}
};