46. 全排列
给定一个不含重复数字的数组 nums
,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
//抄的
class Solution {
private:vector<vector<int>>result;vector<int> path;
public:void backtracking(vector<int>& nums,vector<bool>&used){if(path.size()==nums.size()){result.push_back(path);return;}for(int i=0;i<nums.size();i++){if (used[i] == true) continue;used[i] = true;path.push_back(nums[i]);backtracking(nums, used);path.pop_back();used[i] = false;}}vector<vector<int>> permute(vector<int>& nums) {vector<bool>used(nums.size(), false);backtracking(nums,used);return result;}
};
回溯算法
主要还是依托于递归,再递归中循环判断,实现多层的穷举
这里传递一个bool数组used用于判断在此次枚举中数字是否用过,终止条件是当前记录的路径长度是否等于原数组长度,回溯处理需要弹出path末尾元素并重置used对应元素。