字符串556. 下一个更大元素 III

Posted 梦醒潇湘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串556. 下一个更大元素 III相关的知识,希望对你有一定的参考价值。

题目:

 

 

解答:

 

 

 1 class Solution {
 2 public:
 3      vector<int> digits(int n) 
 4      {
 5         vector<int> res;
 6         while (n > 0) 
 7         {
 8             res.push_back(n % 10);
 9             n /= 10;
10         }
11         reverse(res.begin(), res.end());
12         return res;
13     }
14     int nextGreaterElement(int n) 
15     {
16         vector<int> nums = digits(n);
17         int N = nums.size();
18         int l = -1;
19         for (int i = 1; i < N; ++i) 
20         {
21             if (nums[i] > nums[i - 1]) 
22             {
23                 l = i - 1;
24             }
25         }
26         if (l == -1) 
27         {
28             return -1;
29         }
30 
31         reverse(nums.begin() + l + 1, nums.end());
32         int r = upper_bound(nums.begin() + l + 1, nums.end(), nums[l]) - nums.begin();
33         swap(nums[l], nums[r]);
34         long res = 0;
35         for (int i = 0; i < N; ++i) 
36         {
37             res = 10 * res + (long)nums[i];
38         }
39         return res > INT_MAX ? -1 : res;
40     }
41 };

 

以上是关于字符串556. 下一个更大元素 III的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 556. 下一个更大元素 III(Next Greater Element III)

每日一题556. 下一个更大元素 III

Leetcode 556.下一个更大元素III

leetcode 556. 下一个更大元素 III

556. 下一个更大元素 III-(31. 下一个排列)-两次遍历

556. 下一个更大元素 III-(31. 下一个排列)-两次遍历