原题链接:46.全排列
思路:
主要是和组合的区别,排列是可以从头使用元素
但是依旧是不允许有重复元素使用,所以依旧是需要进行去重
全代码:
class Solution {
public:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums,vector<bool>& used){if(path.size() == nums.size()){//当全排列的序列大下坡等于数组大小 则终止result.push_back(path);return;}for(int i = 0; i < nums.size(); i++){//因为是每次都要从头开始排,所以不需要startIndexif(used[i] == true) continue; //如果本层之前的元素使用过,则跳过循环used[i] = true;//记录该元素已被使用path.push_back(nums[i]);//将nums[i] push进path中backtracking(nums,used); //进入递归used[i] = false; //回溯path.pop_back(); //回溯}}vector<vector<int>> permute(vector<int>& nums) {vector<bool> used(nums.size(),false);backtracking(nums,used);return result;}
};