Open tradyau opened 3 years ago
/**
* @param {number[]} nums
* @return {string}
*/
var largestNumber = function (nums) {
function compare(a, b) {
// 字符串化
a = a + "";
b = b + "";
if (a.length === b.length) {
// 如果长度相等,只需要比较字典序
// 递减排序
return a > b ? -1 : 1;
} else {
// 如果长度不等,通过相加组合变成长度相等的处理
// 等价于比较 a + b 和 b + a 的字典序大小
// 如果 a + b > b + a,说明 a 在 b 前面组成的数更大,也就是 a > b
return compare(a + b, b + a);
}
}
let sorted = nums.sort(compare);
if (sorted.every((item) => item === 0)) {
// 处理全零的情况
sorted = [0];
}
return sorted.join("");
};
/**
/**
* @param {number[]} nums
* @return {string}
*/
var largestNumber = function(nums) {
const resArray = nums.sort((a,b) => {
return (b+''+a) - (a+''+b)
})
if(resArray.reduce((r,v)=> r+v) == 0){
return '0'
}else{
return resArray.join('')
}
};
/**
* @param {number[]} nums
* @return {string}
*/
var largestNumber = function(nums) {
nums.sort((fE, sE) => {
const a = '' + fE + sE
const b = '' +sE + fE
if (a < b) {
return 1
} else if (a > b) {
return -1
} else {
return 0
}
})
if (nums[0] === 0) {
return '0'
} else {
return nums.join('')
}
};
/**
* @param {number[]} nums
* @return {string}
*/
var largestNumber = function (nums) {
// 处理全0情况
if (nums.every((val)=>{
return val===0
})) {
return "0"
}
nums.sort().reverse()
nums.sort((a, b) => {
if (b.toString()[0] === a.toString()[0] && b.toString().length != a.toString().length) {
return a.toString().length-b.toString().length
}
return parseInt(b.toString()[0]) - parseInt(a.toString()[0])
})
// 本质上是一个判断a+b是否大于b+a的过程
nums.sort((a, b) => {
return parseInt(b.toString() + a.toString()) - parseInt(a.toString() + b.toString())
})
let result = ''
nums.forEach(element => {
result = result + element.toString()
});
return result
};
最大数:https://leetcode-cn.com/problems/largest-number/?utm_source=LCUS&utm_medium=ip_redirect&utm_campaign=transfer2china