leetcode|【LC】31. 下一个排列


文章目录

      • 题目描述
      • 解题思路
      • 题解

题目描述
leetcode|【LC】31. 下一个排列
文章图片

leetcode|【LC】31. 下一个排列
文章图片

解题思路
【leetcode|【LC】31. 下一个排列】leetcode|【LC】31. 下一个排列
文章图片

题解
class Solution { private: //反转降序的后部分 void reverse(vector& nums, int left, int right) { while(left < right) { swap(nums[left++], nums[right--]); } } public: void nextPermutation(vector& nums) {int len = nums.size(); if (len < 1) return; //反遍历,找到非降序的首元素 int i = len - 2; while (i >= 0 && nums[i] >= nums[i + 1]) { --i; } if (i >= 0) { int j = len - 1; while (j >= 0 && nums[j] <= nums[i]) { --j; } swap(nums[i], nums[j]); } reverse(nums ,i + 1, len - 1); } };

    推荐阅读