题解 | #下一个更大的数(三)#
下一个更大的数(三)
http://www.nowcoder.com/practice/475da0d4e37a481bacf9a09b5a059199
类似 下一个排列 链接:https://www.nowcoder.com/practice/50b0b87e50be4944b34cb0f2ce618197
next_permutation函数
把数字拆开来放数组里,调用函数 (返回false说明该排列已最大,返回原数字)
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return int整型
*/
int nextGreaterElement(int n) {
// write code here
int *a = new int[20];
int temp=n;
int k=19;
if(n<=10)return -1;
while(n){
a[k--] = n%10;
n /= 10;
}
k++;
bool isok = next_permutation(a+k, a+20);
if(!isok)return -1;
int sum=0;
for(int i=k; i<=19; i++){
sum = sum*10 + a[i];
}
return sum;
}
};