leetcode刷題筆記一百七十九題 最大數
阿新 • • 發佈:2020-09-11
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 } } }