https://oj.leetcode.com/problems/permutations/
Given a collection of 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]
, and [3,2,1]
.
class Solution {
public:
vector<vector<int>> permute(vector<int> &num) {
vector<vector<int>> resultVec;
resultVec.push_back(num);
permute(0, resultVec, num);
return resultVec;
}
private:
void permute(size_t position, vector<vector<int>> &resultVec, vector<int> &num) {
for (size_t i = position; i < num.size(); i++) {
if (i != position) {
swap(num[position], num[i]);
resultVec.push_back(num);
}
permute(position + 1, resultVec, num);
if (i != position) {
swap(num[position], num[i]);
}
}
}
};