文章目录
更多LeetCode题解
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]
]
Solution
递归可解。
class Solution {
public:
vector<vector<int>> permute(vector<int> &nums) {
vector<vector<int>> permutation;
vector<int> used_ele;
vector<int> temp;
putElement(permutation, temp, nums, used_ele);
return permutation;
}
void putElement(vector<vector<int>> &permutation, vector<int> &res, vector<int> nums, vector<int> &used_ele) {
if (used_ele.size() < nums.size()) {
for (int i = 0; i < nums.size(); i++) {
if (count(used_ele.begin(), used_ele.end(), nums[i])) {
continue;
} else {
res.push_back(nums[i]);
used_ele.push_back(nums[i]);
putElement(permutation, res, nums, used_ele);
}
}
if (res.size() == 0) return;
res.erase(res.end() - 1);
used_ele.erase(used_ele.end() - 1);
} else {
permutation.push_back(res);
res.erase(res.end() - 1);
used_ele.erase(used_ele.end() - 1);
}
}
};