☰
53.全排列组合
2026/9/30 4:10:21 网站建设 项目流程

1.思路

递归+回退,难以理解就手动模拟看代码先熟悉吧

2.代码

class Solution { public: vector<vector<int>> res; vector<int> visited; vector<int> path; void backtrack(vector<int> &nums){ if(path.size()==nums.size()){ // 当前路径=数组元素,加入结果 res.push_back(path); return ; } //循环遍历每个数当前是否被访问 //visited[i] 表示元素nums[i]是否被访问 for(int i = 0;i<nums.size();i++){ if(visited[i]==0){ visited[i]=1; path.push_back(nums[i]); backtrack(nums); visited[i]=0;//回溯,使得visited[2] = 0,3回退,{1,2},注意!继续进入上一层递归进行后续的for循环! path.pop_back(); } } } vector<vector<int>> permute(vector<int>& nums) { visited.resize(nums.size(),0);//0表示未访问 backtrack(nums); return res; } };

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询