美文网首页
把数组排成最小的数

把数组排成最小的数

作者: 小小的白菜 | 来源:发表于2018-10-08 21:05 被阅读0次

    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

    思路
      // 若 a+b<b+a ; a排在在前的规则排序。
      // 如[2, 21], 因为 212 < 221 所以排序后为[21, 2]
      function PrintMinNumber(numbers) {
        numbers.sort(function (s1, s2) {
          let c1 = s1 + '' + s2
          let c2 = s2 + '' + s1
          console.log(c1) // 332
          console.log(c2) // 323
          return c1 > c2 // true 交换 [3, 32] => [32, 3]
        })
        return numbers
      }
    
    代码
      function PrintMinNumber(numbers) {
        if (numbers.length ===0) {
          return ''
        } else {
          numbers.sort(function (s1, s2) {
            let c1 = s1 + '' + s2
            let c2 = s2 + '' + s1
            return c1 > c2
          })
          return Number(numbers.join(''))
        }
    
      }
    
      console.log(PrintMinNumber([]))
    

    相关文章

      网友评论

          本文标题:把数组排成最小的数

          本文链接:https://www.haomeiwen.com/subject/gwtsaftx.html