题目描述:
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题代码:
class Solution {
public:
vector<vector<int>> result;
vector<vector<int>> permute(vector<int>& nums) {
vector<int> dst(nums.size());
queue<int> q;
for(int i = 0; i < nums.size(); i++){
q.push(i);
}
traverse(nums, dst, q, 0);
return result;
}
void traverse(vector<int>& src, vector<int>& dst, queue<int>& q, int src_index){
if(q.empty()){
result.push_back(dst);
return;
}
int dst_index;
for(int i = 0; i < q.size(); i++){
dst_index = q.front();
q.pop();
dst[dst_index] = src[src_index];
traverse(src, dst, q, src_index + 1);
q.push(dst_index);
}
}
};
运行结果: