描述
給定一個32位整數n,用同樣的數字組成新的32位整數,使得它要比n大,回傳最小的這樣的數,如果不存在這樣的整數,回傳-1,
樣例
- 樣例 1:
輸入: 12
輸出: 21
- 樣例 2:
輸入: 21
輸出: -1
決議
nextGreaterElement = function (n) {
function check(source, sort){
for(let i = 0; i < source.length; i++){
if(source[i] != sort[i]){
return true;
}
}
return false;
}
function buildString(str){
let strArray = str.split(''),
firstChar = strArray.shift(),
sortArray = [...strArray].sort((a, b)=> a > b ? -1 : 1),
res = '';
if(!check(strArray, sortArray)){
for(let i = 0; i <= sortArray.length; i++){
if(sortArray[i] <= firstChar || i == sortArray.length){
res += sortArray[i - 1];
sortArray.splice(i - 1, 1, firstChar);
break;
}
}
sortArray.sort((a, b)=> a > b ? 1 : -1);
return res + sortArray.join('');
}
return firstChar + buildString(strArray.join(''));
}
let nToString = n.toString().split(''),
sortSet = [...nToString].sort((a, b)=> a > b ? -1 : 1);
if(check(nToString, sortSet)){
let num = buildString(nToString.join('')) - 0;
return num > Math.pow(2, 31) - 1 ? -1 : num;
}
return -1;
}
運行結果

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/81256.html
標籤:其他
上一篇:phpStudy及XAMPP環境下設定多個wordpress站點
下一篇:不好!我中了美人計!
