题目
Given a collection of distinct 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], [3,2,1] ]分析
在vector上进行有重复的全排列。
class Solution {
public:
void permutation(vector<int>& nums, int index, vector<vector<int>>& res){
int size=nums.size();
if(index==size)
res.push_back(nums);
for(int i=index;i<size;++i){
swap(nums[index],nums[i]);
permutation(nums,index+1,res);
swap(nums[index],nums[i]);
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
permutation(nums,0,res);//递归在nums上进行排列
return res;
}
};