cnzz统计代码放在网站,网站建设一般要多钱,网页制作的公共样式,中山一站式营销推广平台556. 下一个更大元素 III
给你一个正整数 n #xff0c;请你找出符合条件的最小整数#xff0c;其由重新排列 n 中存在的每位数字组成#xff0c;并且其值大于 n 。如果不存在这样的正整数#xff0c;则返回 -1 。
注意 #xff0c;返回的整数应当是一个 32 位整数 请你找出符合条件的最小整数其由重新排列 n 中存在的每位数字组成并且其值大于 n 。如果不存在这样的正整数则返回 -1 。
注意 返回的整数应当是一个 32 位整数 如果存在满足题意的答案但不是 32 位整数 同样返回 -1 。
示例 1
输入n 12 输出21
示例 2
输入n 21 输出-1
解题思路
下一个排列的变种
代码
class Solution {public void swap(char[] chars,int i,int j){char cchars[j];chars[j]chars[i];chars[i]c;}public int nextGreaterElement(int n) {char[] chars String.valueOf(n).toCharArray();int i chars.length-2,jchars.length-1;while (i0chars[i]chars[i1])i--;if (i0)return -1;while (chars[j]chars[i])j--;swap(chars,i,j);int li1,rchars.length-1;while (lr){swap(chars,l,r);l;r--;}String snew String(chars);return Long.parseLong(s)Integer.MAX_VALUE?-1:Integer.parseInt(s);}
}