LeetCode 46.全排列
给定一个不含重复数字的数组 nums
,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
// 想象成树,树的问题考虑是否可以回溯;
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
int n = nums.size();
vector<vector<int>> ans;
backtracking(nums,ans,n,0);
return ans;
}
void backtracking(vector<int>& nums,vector<vector<int>>& ans,int& n,int level) {
if(level == n-1)
{
ans.push_back(nums);
return;
}
for(int i=level;i<n;i++)
{
swap(nums[i],nums[level]); // 交换-实现nums的不同排序;
backtracking(nums,ans,n,level+1);
swap(nums[i],nums[level]); // 交换回来
}
}
};