LeetCode 46 Permutations 回溯
Given an array nums
of distinct integers, return all the possible permutations. You can return the answer in any order.
Solution
我们需要求出一个数组的全排列。那么还是依旧使用回溯,其次利用 \(vis\) 来标记数字是否被访问。
点击查看代码
class Solution {
private:
vector<vector<int>> ans;
int vis[10];
vector<int> cur;
void dfs(vector<vector<int>>& ans, vector<int>& cur, vector<int> nums, int n){
if(cur.size()==n){ans.push_back(cur);return;}
for(int i=0;i<n;i++){
if(vis[i])continue;
vis[i] = 1; cur.push_back(nums[i]);
dfs(ans, cur, nums, n);
cur.pop_back(); vis[i] = 0;
}
}
public:
vector<vector<int>> permute(vector<int>& nums) {
int n = nums.size();
dfs(ans, cur, nums, n);
return ans;
}
};