题目描述
给定一个数字集合,返回所有可能的排列。例如[1,2,3]有如下排列:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], and[3,2,1].
解题思路(我还说不清楚,再缕缕吧)
边界条件:
s表示已经对num处理过几次,若达到num长度,则可将当前num压入res中
代码示例
class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {
vector<vector<int>> res;
permutation(res, num, 0);
return res;
};
void permutation(vector<vector<int>>& res, vector<int>& num, int s) {
if (s == num.size()) {
res.push_back(num);
}
for (int i = s; i < num.size(); i++) {
swap(num[s], num[i]);
permutation(res, num, s + 1);
swap(num[s], num[i]);
}
}
};