思路:

找规律。

实现:

 1 class Solution
 2 {
 3 public:
 4     void nextPermutation(vector<int>& nums)
 5     {
 6         int n = nums.size(); bool flg = false;
 7         for (int i = n - 2; i >= 0; i--)
 8         {
 9             if (nums[i] < nums[i + 1])
10             {
11                 sort(nums.begin() + i + 1, nums.end());
12                 int p = upper_bound(nums.begin() + i + 1, nums.end(), nums[i]) - nums.begin();
13                 swap(nums[i], nums[p]);
14                 flg = true; break;
15             }
16         }
17         if (!flg) sort(nums.begin(), nums.end());
18     }
19 }

相关文章:

  • 2021-05-08
  • 2021-09-16
  • 2021-10-23
  • 2021-07-07
  • 2021-09-24
猜你喜欢
  • 2021-12-01
  • 2022-01-28
  • 2021-12-31
  • 2022-12-23
  • 2021-12-24
相关资源
相似解决方案