classSolution{public:intnextGreaterElement(intn){conststring&s=nextPermutation(to_string(n));constlongans=stol(s);returnans>INT_MAX||ans<=n?-1:ans;}private:// Very simliar to 31. Next PermutationstringnextPermutation(strings){constintn=s.length();inti;for(i=n-2;i>=0;--i)if(s[i]<s[i+1])break;if(i>=0){for(intj=n-1;j>i;--j)if(s[j]>s[i]){swap(s[i],s[j]);break;}}reverse(s,i+1,n-1);returns;}voidreverse(string&s,intl,intr){while(l<r)swap(s[l++],s[r--]);}};
classSolution{publicintnextGreaterElement(intn){finalStrings=nextPermutation(String.valueOf(n).toCharArray());finallongans=Long.parseLong(s);returnans>Integer.MAX_VALUE||ans<=(long)n?-1:(int)ans;}// Very simliar to 31. Next PermutationprivateStringnextPermutation(char[]s){finalintn=s.length;inti;for(i=n-2;i>=0;--i)if(s[i]<s[i+1])break;if(i>=0){for(intj=n-1;j>i;--j)if(s[j]>s[i]){swap(s,i,j);break;}}reverse(s,i+1,n-1);returnnewString(s);}privatevoidreverse(char[]s,intl,intr){while(l<r)swap(s,l++,r--);}privatevoidswap(char[]s,inti,intj){finalchartemp=s[i];s[i]=s[j];s[j]=temp;}}