Permutations

http://blog.csdn.net/tuantuanls/article/details/8717262

对于第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]);

}

}

};

Last updated

Was this helpful?