Permutations
Last updated
Was this helpful?
Last updated
Was this helpful?
对于第k层节点来说,就是交换固定了前面 k-1 位,然后分别 swap(k,k), swap(k, k+1) , swap(k, k+2) ...
class Solution {
public:
vector<vector<int>> ret;
vector<vector<int>> permute(vector<int>& nums) {
dfs(nums,0);
return ret;
}
void dfs(vector<int>& nums,int i){
if(nums.size()==i)
ret.push_back(nums);
for(int j=i;j<nums.size();j++){
swap(nums[i],nums[j]);
dfs(nums,i+1);
swap(nums[i],nums[j]);
}
}
};