class Solution {
public:
vector<int>tmp;vector<vector<int>>res;
vector<vector<int>> permute(vector<int>& nums) {
backtrack(nums,0,(int)nums.size());
return res;
}
void backtrack(vector<int>&nums,int first,int len){
if(first==len){
res.emplace_back(nums);
return;
}
for(int i=first;i<len;++i){ //first的位置可以填[first,n-1]的任一数字
swap(nums[i],nums[first]);
backtrack(nums,first+1,len); //继续填下一个数字
swap(nums[i],nums[first]); //撤销这次递归的操作,返回时恢复nums的first后面的位置
}
}
};
46. 全排列 回溯
最新推荐文章于 2024-07-25 11:15:54 发布