static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
resover(0, res, nums);
return res;
}
void resover(int n, vector<vector<int>>& res, vector<int>& nums){
//当尝试对不存在的数组元素进行递归时,标明所有数已经排列完成,输出。
if (n == nums.size()){
vector<int> tmp;
for(int i = 0; i < nums.size(); i++)
tmp.push_back(nums[i]);
res.push_back(tmp);
return;
}
//循环实现交换和之后的全排列
for (int i = n; i < nums.size(); i++){
//i是从n开始 i=n;swap(n,i)相当于固定当前位置,在进行下一位的排列。
swap(nums[n],nums[i]);
resover(n + 1, res, nums);
swap(nums[n], nums[i]);
}
return;
}
};
LetCode 46. 全排列
猜你喜欢
转载自blog.csdn.net/wbb1997/article/details/80988406
今日推荐
周排行