此題要將 2N 個人平均分攤在兩個城市內,並且要讓所有人飛去的時間的總和是最少的,最後求出其加總的時間為何。
先將 2N 個人按照飛去 A 城市可以省下多少的時間來進行排序,最後選前 N 個飛去 A 城市最省的人飛去 A 城市,另一半人去 B 城市,加總所有時間即可得解。
Kotlin(172ms)
/*******************************************************
* LeetCode 1029. Two City Scheduling *
* Author: Maplewing [at] knightzone.studio *
* Version: 2020/06/03 *
*******************************************************/
class Solution {
fun twoCitySchedCost(costs: Array<IntArray>): Int {
val costsByDiffs = costs.sortedBy { it[0] - it[1] }
val n = costsByDiffs.size / 2
return costsByDiffs.withIndex().sumBy {
it.value[ if (it.index < n) 0 else 1 ]
}
}
}