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
}
}
}