Я пытаюсь объединить несколько пересекающихся интервалов "встреч".
Заданные интервалы:
[{0, 1}, {3, 5}, {4, 8}, {10, 12}, {9, 10}]
Объединенные интервалы:
[{0, 1}, {3, 8}, {9, 12}]
Мой первый подход - двойной цикл. Тем не менее, мой вывод получается:
[{3, 8}, {9, 12}]
Что опускается {0, 1} в моем конечном результате.
Код:
type Meeting struct {
startTime int
endTime int
}
func MergeIntervals(meetings []Meeting) []Meeting {
var mergedMeetings []Meeting
for i := 0; i < len(meetings); i++ {
for j := i + 1; j < len(meetings); j++ {
var first Meeting
var second Meeting
// the meeting with the earlier start time is the "first" meeting
if meetings[i].startTime < meetings[j].startTime {
first = meetings[i]
second = meetings[j]
} else {
first = meetings[j]
second = meetings[i]
}
if first.endTime >= second.startTime {
mergedMeetings = append(mergedMeetings, Meeting{first.startTime, second.endTime})
}
}
}
return mergedMeetings
}