1. 程式人生 > >【LeetCode】46. 全排列

【LeetCode】46. 全排列

題目描述

給定一個沒有重複數字的序列,返回其所有可能的全排列。

示例

輸入: [1,2,3]
輸出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]

解決方法

方法1:遞歸回溯
方法2:呼叫庫函式next_permutation

// //方法1:遞歸回溯
// class Solution {
//     vector<vector<int>> res;
// public:
//     vector<vector<int>> permute(vector<int>& nums) {
// if (nums.size()==0) return res; // permuteMain(nums,0); // return res; // } // private: // void permuteMain(vector<int> nums, int begin){ // if (begin==nums.size()) res.push_back(nums); // else{ // for (int i=begin;i<nums.size();i++){ // swap(nums[begin],nums[i]);
// permuteMain(nums,begin+1); // swap(nums[begin],nums[i]); // } // } // } // }; //方法2:呼叫庫函式next_permutation class Solution { public: vector<vector<int> > permute(vector<int>& nums) { vector<vector<int>> res; sort
(nums.begin(),nums.end()); do { res.push_back(nums); }while(next_permutation(nums.begin(),nums.end())); return res; } };