[打卡1:leetcode179-最大数] |刷题打卡

642 阅读2分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

前言

第一次参加掘金打卡活动,别的不说 主要是奔着奖励来的。4.12开始为了达到14题小目标 冲冲冲!!!

image.png 首先打开leetcode找算法题,来了个题解排序+每日打卡的题目

image.png

题目描述

题目链接:最大数

题目描述我用截图leetcode的为主,所以题目如下图 image.png

思路分析

依照题目可以知道,这是从一个数组然后组成了一个数,然后求组成的最大的数。 第一次分析:首先数字都用上 这样位数才能最大,全用上的情况有n(数组的长度)的阶乘种可能 然后求这n!情况的max值。这是一种最笨的方法也是可行的 先组成所有可能 输入最大值,不过这里我就不试这种解法了

再分析一下,让前面的数字尽可能的大,这样组成的数才会更大,所以并不需要组成所有组合,那我首先想到sort的方法,这里有个注意点比如[3,30]组成330要比组成303更大 所以我马上想到解法先把输入的数组依照大小排序 不过排序方法是去对比${a}${b}${b}${a}而不是直接去按照ab大小排序,

image.png 测试一下没通过

image.png 尴尬了 还以为分析的很好了 却漏了其它可能性,那改进一下输入值==0的就直接输出'0',再来测试一波

image.png

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。今天是第一天开始刷算法题,坚持就是胜利

       ↓↓↓

算法系列链接

       ↑↑↑

这里可以点!这里可以点!这里可以点!