题目描述:
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>> ret;
ret.push_back(num);
for (int i = 0; i < num.size(); i++){
int N = ret.size();
for (int j = 0; j < N; j++){
vector<int> tmp = ret[j];
for (int k = i + 1; k < tmp.size(); k++){
swap(tmp[i], tmp[k]);
ret.push_back(tmp);
swap(tmp[i], tmp[k]);
}
}
}
return ret;
}
};