题意描述
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]
]
解题思路
递归找到所有组合方式,数据很小, 13ms 内就可以通过。
实现代码
class Solution {
public:
vector<vector<int> > result;
vector<vector<int> > permute(vector<int>& nums) {
dfs(nums.size(), nums);
return result;
}
vector<int> x;
void dfs(int n, vector<int>& nums) {
if (n == 0) {
result.push_back(x);
return;
}
for (int i = 0; i < nums.size(); ++ i) {
x.push_back(nums[i]);
int iNumber = nums[i];
nums.erase(nums.begin() + i);
dfs(n-1, nums);
x.pop_back();
nums.insert(nums.begin() + i, iNumber);
}
}
};