给你一个正整数 n
,请你找出符合条件的最小整数,其由重新排列 n
中存在的每位数字组成,并且其值大于 n
。如果不存在这样的正整数,则返回 -1
。
注意 ,返回的整数应当是一个 32 位整数 ,如果存在满足题意的答案,但不是 32 位整数 ,同样返回 -1
。
示例 1:
输入:n = 12 输出:21
示例 2:
输入:n = 21 输出:-1
提示:
1 <= n <= 231 - 1
int nextGreaterElement(int n) {
vector
int m = 0;
int index = -1;
while (n>0)
{
m = n % 10;
n = n / 10;
if (vec.empty())
{
vec.push_back(m);
continue;
}
vec.push_back(m);
sort(vec.begin(), vec.end());
for (int i = 0; i < vec.size(); i++)
{
if (vec[i] > m)
{
index = i;
break;
}
}
if (index != -1)
{
break;
}
}
long long ret = -1;
if (index != -1)
{
ret = n * 10 + vec[index];
for (int i = 0; i < vec.size(); i++)
{
if (index == i)
{
continue;
}
ret = ret * 10 + vec[i];
}
}
if (ret > 2147483647)
{
return -1;
}
return ret;
}