给定一个无重复元素的数组,如[1,2,3],设计程序,输出[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]。
#include<iostream>
#include<vector>
using namespace std;
class Solution{
public:
void helper(vector<vector<int>>&res,vector<int>&nums,int first, int size){
if(first == size){
res.push_back(nums);
return;
}
for(int i = first; i < size; i++){
swap(nums[i],nums[first]);
helper(res,nums,first+1,size);
swap(nums[i],nums[first]);
}
}
vector<vector<int>> function(vector<int>&nums){
int size = nums.size();
vector<vector<int>>res;
helper(res,nums,0,size);
return res;
}
};