题解
/**
* @param {number} n
* @return {number}
*/
var nextGreaterElement = function(n) {
var maps = [];
var ans = 0;
while(n != 0) {
let tmp = n % 10;
n = (n - tmp) / 10;
maps.unshift(tmp);
}
let need_change = [];
let pos = -1;
for(let i = maps.length - 1; i >= 0; i--) {
if(need_change.length == 0) {
need_change.push(maps[i]);
continue;
}
let big = 0;
for(let h = 0; h < need_change.length; h++) {
if(need_change[h] > maps[i]) {
let d = need_change.splice(h,1);
need_change.push(maps[i]);
need_change.sort((a,b)=>{
return a - b;
});
need_change.unshift(d);
big = 1;
break;
}
}
if(big == 1) {
pos = i;
break;
} else {
need_change.push(maps[i]);
need_change.sort((a, b)=>{
return a - b;
});
}
}
if(pos == -1) { return pos;}
let point = 0;
for(let j = pos; j <= maps.length - 1; j++) {
maps[j] = need_change[point];
point++;
}
for(let i = maps.length - 1; i >= 0; i--) {
ans += Math.pow(10, maps.length - 1 - i) * maps[i];
}
if(ans > 2147483647) { return -1;}
return ans;
};