首页 > 代码库 > 【LeetCode】046. Permutations
【LeetCode】046. Permutations
题目:
Given a collection of distinct numbers, return all possible permutations.
For example,[1,2,3]
have the following permutations:
[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
题解:
之前解过Next Permutation,故这个题可以重复调用nextPermutation函数产生全排列
Solution 1 ()
class Solution { public: void nextPermutation(vector<int>& nums) { int n = nums.size(); for(int i=n-2; i>=0; --i) { if(nums[i]>=nums[i+1]) continue; int j = n-1; for(; j>i; --j) { if(nums[j]>nums[i]) break; } swap(nums[i], nums[j]); reverse(nums.begin()+i+1, nums.end()); return; } reverse(nums.begin(), nums.end()); } vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> vv; vector<int> v = nums; vv.push_back(v); nextPermutation(v); while(v != nums) { vv.push_back(v); nextPermutation(v); } return vv; } };
其实这个问题很容易想到递归的解法,取第一个数后对剩下的元素进行全排列
Solution 2 ()
【LeetCode】046. Permutations
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。