Leetcode 046 Permutations

xiaoxiao2021-02-28  39

题目连接: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; } };
转载请注明原文地址: https://www.6miu.com/read-2619918.html

最新回复(0)