1. 题目描述
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
2. 解法
思路:回溯 + 剪枝。
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
dfs(nums, 0);
return res;
}
vector<int> tmp;
vector<vector<int>> res;
void dfs(vector<int>& nums, int start){
if(tmp.size() == nums.size()){
res.push_back(tmp);
return;
}
for(int i = start; i < nums.size(); i++){
tmp.push_back(nums[i]);
swap(nums[i], nums[start]);
dfs(nums, start + 1);
swap(nums[i], nums[start]);
tmp.pop_back();
}
}
};