leetcode刷题笔记一百七十九题 最大数

leetcode刷题笔记一百七十九题 最大数

源地址:179. 最大数

问题描述:

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

示例 1:

输入: [10,2]
输出: 210
示例 2:

输入: [3,30,34,5,9]
输出: 9534330

//实际上是针对数字转字符串连接 以字符串形式拼接比较构成结果大小确定位置
object Solution {
    def largestNumber(nums: Array[Int]): String = {
        if (nums == null || nums.length == 0) return null
        val res = nums.map(_.toString).sortWith((x, y) => (x + y >= y + x)).mkString
        if (res.head == '0') return "0"
        else return res
    }
}

//自行实现冒泡排序 而不是修改sort的默认比较器
object Solution {
    def largestNumber(nums: Array[Int]): String = {
bubSort(nums)
    val r = nums.reverse.mkString
    if(r.charAt(0) == '0') "0" else r
    }
    /** if f larger than l */
  def compare(f: Int, l: Int): Boolean = {
    val fStr = f.toString
    val lStr = l.toString
    if (fStr + lStr > lStr + fStr) true else false
  }

  def bubSort(nums: Array[Int]): Unit = {
    for (i <- 0 until nums.length;
         j <- 0 until nums.length - i - 1;
         if compare(nums(j), nums(j + 1))) {
      val tmp = nums(j)
      nums(j) = nums(j + 1)
      nums(j + 1) = tmp
    }
  }
}
posted @ 2020-09-11 13:20  ganshuoos  阅读(105)  评论(0编辑  收藏  举报