Участник:Hellhoundmipt/maximum-profit-in-job-scheduling

Материал из DISCOPAL
< Участник:Hellhoundmipt
Версия от 21:18, 6 декабря 2020; Hellhoundmipt (обсуждение | вклад) (Новая страница: «https://leetcode.com/problems/maximum-profit-in-job-scheduling/submissions/ Код на scala (пришлось использовать тэг code-cpp) <code-c…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

https://leetcode.com/problems/maximum-profit-in-job-scheduling/submissions/

Код на scala (пришлось использовать тэг code-cpp)

object Solution {
    def jobScheduling(startTime: Array[Int], endTime: Array[Int], profit: Array[Int]): Int = {
        var endTime2Profit = Array((0, 0))
        val jobs = (for (i <- 0 until startTime.length) yield (startTime(i), endTime(i), profit(i))).sortBy{ case (start, end, prof) => end }.toList //Sort by endTime
        var maxProfit = 0
        for ((start, end, prof) <- jobs) {
          val cur = endTime2Profit.indexWhere(_._1 >= start + 1) match {
            case -1 => endTime2Profit.length - 1
            case 0 => 0   //Should not get here
            case i => i - 1
          }
          val (_, prevProfit) = endTime2Profit(cur)
          val potentialProfit = prevProfit + prof
          if (potentialProfit > endTime2Profit.last._2) {
            endTime2Profit = endTime2Profit :+ (end, potentialProfit)
          }
        }
        endTime2Profit.last._2
    }
}