556. 下一个更大元素 III
556. Next Greater Element III
题目描述
给定一个 32 位正整数 n,你需要找到最小的 32 位整数,其与 n 中存在的位数完全相同,并且其值大于 n。如果不存在这样的 32 位整数,则返回-1。
LeetCode556. Next Greater Element III中等
示例 1:
输入: 12
输出: 21
示例 2:
输入: 21
输出: -1
示例 3:
输入: 12443322
输出: 13222344
Java 实现
import java.util.Arrays;
class Solution {
public int nextGreaterElement(int n) {
char[] nums = Integer.toString(n).toCharArray();
int i, j, len = nums.length;
for (i = len - 1; i > 0; --i) {
if (nums[i] > nums[i - 1]) {
break;
}
}
if (i == 0) {
return -1;
}
System.out.println(i);
for (j = len - 1; j >= i; --j) {
if (nums[j] > nums[i - 1]) {
char temp = nums[j];
nums[j] = nums[i - 1];
nums[i - 1] = temp;
break;
}
}
Arrays.sort(nums, i, len);
long val = Long.parseLong(new String(nums));
return val > Integer.MAX_VALUE ? -1 : (int) val;
}
}
相似题目
参考资料