leetcode: 630. Course Schedule III

kldaji·2022년 6월 23일
1

leetcode

목록 보기
34/56

problem

greedy with heap

class Solution {
    fun scheduleCourse(courses: Array<IntArray>): Int {
        courses.sortBy { it[1] } // ascending order by last day
        val queue = PriorityQueue<Int>(compareBy { -it }) // descending order by duration
        var curr = 0
        courses.forEach { course ->
            curr += course[0] // accumulate duration
            queue.add(course[0])
            if (curr > course[1]) { // exceed last day
                curr -= queue.poll() // remove biggest duration course
            }            
        }        
        return queue.size
    }
}
profile
다양한 관점에서 다양한 방법으로 문제 해결을 지향하는 안드로이드 개발자 입니다.

0개의 댓글