原题:
解决方法:
代码:
Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
解决方法:
用dfs来解这道题。
当前序号开始,跟后面的数进行交换来获取不同的排列。
自己与自己交换不改变值,相当于初始排列。
代码:
void dfs(vector<vector<int>>& res, vector<int>& nums, int index){
if (index >= nums.size()){
res.push_back(nums);
return;
}
for(int i = index; i < nums.size();i++){
swap(nums[index], nums[i]);
dfs(res, nums, index + 1);
swap(nums[index], nums[i]);
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
dfs(res, nums, 0);
return res;
}