
g3101_3200.s3169_count_days_without_meetings.Solution.kt Maven / Gradle / Ivy
package g3101_3200.s3169_count_days_without_meetings
// #Medium #Array #Sorting #2024_06_08_Time_733_ms_(97.59%)_Space_101.5_MB_(93.98%)
class Solution {
fun countDays(days: Int, meetings: Array): Int {
var availableDays: MutableList = ArrayList()
availableDays.add(intArrayOf(1, days))
// Iterate through each meeting
for (meeting in meetings) {
val start = meeting[0]
val end = meeting[1]
val newAvailableDays: MutableList = ArrayList()
// Iterate through available days and split the intervals
for (interval in availableDays) {
if (start > interval[1] || end < interval[0]) {
// No overlap, keep the interval
newAvailableDays.add(interval)
} else {
// Overlap, split the interval
if (interval[0] < start) {
newAvailableDays.add(intArrayOf(interval[0], start - 1))
}
if (interval[1] > end) {
newAvailableDays.add(intArrayOf(end + 1, interval[1]))
}
}
}
availableDays = newAvailableDays
}
// Count the remaining available days
var availableDaysCount = 0
for (interval in availableDays) {
availableDaysCount += interval[1] - interval[0] + 1
}
return availableDaysCount
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy