下一个更大元素(下一个排列)
class Solution {
public:
int nextGreaterElement(int n) {
auto temp= to_string(n);
int i= temp.size()-1;
while(i>0 && temp[i]<=temp[i-1])i--;//确认是递减
if(i>0){
int j=temp.size()-1;
while(temp[j]<=temp[i-1])j--;//找到刚好比他大的
swap(temp[i-1],temp[j]);//交换过去高位变大
reverse(temp.begin()+i,temp.end());//低n位原来是非递增整个翻转过来变小
}
else return -1;
auto ans=stol(temp);
return ans >INT_MAX ? -1:ans;
}
};
- to_string()转string
- auto ans=stol(temp)字符串转整型