字符串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)