[LeetCode] 670 - Maximum Swap

題意

給定一個數字,輸出交換任兩數字後最大的值。

解法

貪心。

從位數最高的數字開始換,若欲更換的數字相同則更換位數最低的。

程式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* @param {number} num
* @return {number}
*/
var maximumSwap = function(num) {
let arr = (num + '').split('');
for ( let i = 0 ; i < arr.length ; i ++ ){
let maxIndex = i, maxNum = -1 ;
for ( let j = i + 1 ; j < arr.length ; j ++ ){
if (arr[maxIndex] < arr[j] || ( maxIndex !== i && arr[maxIndex] === arr[j] ) ){
maxIndex = j;
maxNum = arr[j];
}
}
if ( maxIndex !== i ){
let temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
return parseInt(arr.join(''));
}
}
return num;
};