Description

Given a collection of distinct integers, return all possible permutations.

Example:

Input:

[1,2,3]

Output:

[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]

分析

题目的意思是:返回给定数组的全排列。

  • 深度优先搜索,用交换和递归就行了。

代码

class Solution {
private:
vector<vector<int>> result;
public:
vector<vector<int>> permute(vector<int>& nums) {
DFS(nums,0);
return result;
}
void DFS(vector<int>& nums,int index){
if(index==nums.size()){
result.push_back(nums);
}
for(int i=index;i<nums.size();i++){
swap(nums[index],nums[i]);
DFS(nums,index+1);
swap(nums[index],nums[i]);
}
}
};

参考文献

​46. Permutations​