LeetCode46. Permutations(C++)

Given a collection of distinct integers, return all possible permutations.

Example:

Input: [1,2,3]
Output:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

方法一:直接用next_permutation函数

class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        vector<vector<int>>result;
        sort(nums.begin(),nums.end());
        do{
            result.push_back(nums);
        }while(next_permutation(nums.begin(),nums.end()));
        return result;
    }
};

方法二:递归

class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        vector<vector<int>>result;
        dfs(nums,0,result);
        return result;
    }
    void dfs(vector<int>& nums,int begin,vector<vector<int>>&result){
        if(begin == nums.size()-1)
            result.push_back(nums);
        for(int i=begin;i<nums.size();i++){
            swap(nums[begin],nums[i]);
            dfs(nums,begin+1,result);
            swap(nums[begin],nums[i]);
        }
        return;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_41562704/article/details/86501804