leetcode题目链接 题目 46. 全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路:
dfs的思想,这里的index并不代表元素的下标,只是代表元素的个素,我习惯在dfs里面用index表示递归的深度。
代码:
class Solution { private: vector<vector<int>> ret_vv; void dfs(vector<int>& nums,vector<bool>& used,vector<int>& temp,int index) { if(index>=nums.size()) { ret_vv.push_back(temp); return; } for(int i=0;i<nums.size();i++) { if(used[i]==true) continue; temp.push_back(nums[i]); used[i]=true; dfs(nums,used,temp,index+1); temp.pop_back(); used[i]=false; } } public: vector<vector<int>> permute(vector<int>& nums) { vector<bool> used(nums.size(),false); vector<int > temp; int index=0; dfs(nums,used,temp,index); return ret_vv; } };