class Solution {public: void nextPermutation(vector<int>& nums) { int i = nums.size() - 2; while (i >= 0 && nums[i] >= nums[i + 1]) { i--; } if (i >= 0) { int j = nums.size() - 1; while (j >= 0 && nums[i] >= nums[j]) { j--; } swap(nums[i], nums[j]); } reverse(nums.begin() + i + 1, nums.end()); }};作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/next-permutation/solution/xia-yi-ge-pai-lie-by-leetcode-solution/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
class Solution { public void nextPermutation(int[] nums) { if (nums == null || nums.length == 0) return; int firstIndex = -1; for (int i = nums.length - 2; i >= 0; i--) { if (nums[i] < nums[i + 1]) { firstIndex = i; break; } } if (firstIndex == -1) { reverse(nums, 0, nums.length - 1); return; } int secondIndex = -1; for (int i = nums.length - 1; i >= 0; i--) { if (nums[i] > nums[firstIndex]) { secondIndex = i; break; } } swap(nums, firstIndex, secondIndex); reverse(nums, firstIndex + 1, nums.length - 1); return; } private void reverse(int[] nums, int i, int j) { while (i < j) { swap(nums, i++, j--); } } private void swap(int[] nums, int i, int i1) { int tmp = nums[i]; nums[i] = nums[i1]; nums[i1] = tmp; }}作者:powcai链接:https://leetcode-cn.com/problems/next-permutation/solution/xia-yi-ge-pai-lie-by-powcai/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。