556. 下一个更大元素 III
题目链接:556. 下一个更大元素 III
这个题先转化为字符串,然后解法就是这个题的解法了:31. 下一个排列
代码如下:
class Solution {
public:int nextGreaterElement(int n) {string nums=to_string(n);int i=nums.size()-2;while(i>=0&&nums[i]>=nums[i+1])i--;if(i<0)return -1;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());long res=stol(nums);return res>INT_MAX?-1:res;}//直接调用api函数// int nextGreaterElement(int n) // {// auto nums=to_string(n);// if(!next_permutation(nums.begin(), nums.end())) // return -1;// return stol(nums)>INT_MAX?-1:stol(nums);// }
};