leetcode46
题目:
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
解题思路:
DFS,递归。
代码:
class Solution { public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> res; vector<int> out, visited(nums.size(), 0); permuteDFS(nums, res, visited, out, 0); return res; } void permuteDFS(vector<int>& nums, vector<vector<int>> &res, vector<int> &visited, vector<int> out, int level){ if(level == nums.size()) { res.push_back(out); return; } for(int i=0;i<nums.size();i++){ if(visited[i] == 1) continue; visited[i] = 1; out.push_back(nums[i]); permuteDFS(nums, res, visited, out, level+1); out.pop_back(); visited[i] = 0; } } };