#LeetCode:1029. Two City Scheduling

灆洢 2020-06-03 18:05:26

此題要將 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 ] 
        }
    }
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料