掘金团队号上线,助你 Offer 临门! 点击 查看详情
前言
第一次参加掘金打卡活动,别的不说 主要是奔着奖励来的。4.12开始为了达到14题小目标 冲冲冲!!!
首先打开leetcode找算法题,来了个题解排序+每日打卡的题目
题目描述
题目链接:最大数
题目描述我用截图leetcode的为主,所以题目如下图
思路分析
依照题目可以知道,这是从一个数组然后组成了一个数,然后求组成的最大的数。 第一次分析:首先数字都用上 这样位数才能最大,全用上的情况有n(数组的长度)的阶乘种可能 然后求这n!情况的max值。这是一种最笨的方法也是可行的 先组成所有可能 输入最大值,不过这里我就不试这种解法了
再分析一下,让前面的数字尽可能的大,这样组成的数才会更大,所以并不需要组成所有组合,那我首先想到sort的方法,这里有个注意点比如[3,30]组成330要比组成303更大
所以我马上想到解法先把输入的数组依照大小排序 不过排序方法是去对比${a}${b}和${b}${a}而不是直接去按照ab大小排序,
测试一下没通过
尴尬了 还以为分析的很好了 却漏了其它可能性,那改进一下输入值==0的就直接输出'0',再来测试一波
AC 代码
var largestNumber = function(nums) {
if(nums&&nums.length>0){
let arr = nums.sort((a,b)=>{
return (b.toString()+a.toString())-(a.toString()+b.toString())
})
let totle = ''
arr.forEach(item=>{
totle+= item.toString()
})
if(totle==0){
return '0'
}else{
return totle
}
}else{
return '0'
}
};
总结
考虑点要足,不然就有bug。今天是第一天开始刷算法题,坚持就是胜利
↓↓↓
→ 算法系列链接 ←
↑↑↑
这里可以点!这里可以点!这里可以点!