本文主要是介绍Leetcode 046 Permutations,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目连接:Leetcode 046 Permutations
解题思路:用 Leetcode 031的方法,每次获取下一个序列。
class Solution {public:bool nextPermutation(vector<int>& nums) {int n = nums.size();int idx = n - 1;while (idx && nums[idx-1] >= nums[idx]) idx--;if (idx) {int p = n - 1;while (p >= idx && nums[p] <= nums[idx-1]) p--;int tmp = nums[idx-1];nums[idx-1] = nums[p];nums[p] = tmp;sort(nums.begin() + idx, nums.end());return true;} else {sort(nums.begin(), nums.end());return false;}}vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> ans;sort(nums.begin(), nums.end());ans.push_back(nums);while (nextPermutation(nums)) ans.push_back(nums);return ans;}
};
这篇关于Leetcode 046 Permutations的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!