LeetCode in Kotlin

2365. Task Scheduler II

Medium

You are given a 0-indexed array of positive integers tasks, representing tasks that need to be completed in order, where tasks[i] represents the type of the ith task.

You are also given a positive integer space, which represents the minimum number of days that must pass after the completion of a task before another task of the same type can be performed.

Each day, until all tasks have been completed, you must either:

Return the minimum number of days needed to complete all tasks.

Example 1:

Input: tasks = [1,2,1,2,3,1], space = 3

Output: 9

Explanation:

One way to complete all tasks in 9 days is as follows:

Day 1: Complete the 0th task.

Day 2: Complete the 1st task.

Day 3: Take a break.

Day 4: Take a break.

Day 5: Complete the 2nd task.

Day 6: Complete the 3rd task.

Day 7: Take a break.

Day 8: Complete the 4th task.

Day 9: Complete the 5th task.

It can be shown that the tasks cannot be completed in less than 9 days.

Example 2:

Input: tasks = [5,8,8,5], space = 2

Output: 6

Explanation:

One way to complete all tasks in 6 days is as follows:

Day 1: Complete the 0th task.

Day 2: Complete the 1st task.

Day 3: Take a break.

Day 4: Take a break.

Day 5: Complete the 2nd task.

Day 6: Complete the 3rd task.

It can be shown that the tasks cannot be completed in less than 6 days.

Constraints:

Solution

@Suppress("NAME_SHADOWING")
class Solution {
    fun taskSchedulerII(tasks: IntArray, space: Int): Long {
        var space = space
        var days: Long = 0
        space++
        val lastOccurence = HashMap<Int, Long>()
        for (i in tasks.indices) {
            if (lastOccurence.containsKey(tasks[i])) {
                val lastTimeOccurred = lastOccurence[tasks[i]]!!
                val daysDifference = days - lastTimeOccurred
                if (daysDifference < space) {
                    days += space - daysDifference
                }
            }
            lastOccurence[tasks[i]] = days
            days++
        }
        return days
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy