Проблема с календарем и определение свободного слота - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь решить проблему с интервальным календарем.

Учитывая занятые слоты как набор данных в календаре внешнего вида человека и время, необходимое для встречи (например, 45 минут), записьметод поиска свободного места для планирования встречи.

Ввод:
per1: (1,5) (10, 14) (19,20) (27,30)

per2: (3,5) (12,15) (18,21) (23,24)
Выход: (6,9) (16,17) (22,22) (25,26)

Я пытаюсь понять, как решить эту проблему, используя:

A) Vanilla JavaScript (ES5 / ES6)

B) Использование структуры данных, такой как деревья интервалов и т. Д.

Я думаю, может быть, объединить оба календаря и отсортировать их в порядке возрастания времени начала, а затем начать искать слот?Пожалуйста, поправьте меня, если я ошибаюсь.

Нужны ваши советы / предложения по поводу того же.

1 Ответ

0 голосов
/ 19 марта 2019

Учитывая, что это кортеж абсолютных часов и задействовано только два человека, вы можете поддерживать массив состояний длиной 24. Запустите цикл, чтобы отметить все часы, когда p1 и p2 заняты.Вы останетесь с массивом часов, где они оба не будут заняты, и затем извлечете абсолютные промежутки между такими интервалами.Вот скрипка (https://jsfiddle.net/r9nq63tk/1/), которая обрабатывает маркировку занятых часов.

let freeHours = new Array(24);
// Mark the busy hours
let intervals = [];
for(let hours = 0; hours < 24; hours++) {
  // Find the ranges where the hours have not been marked and push it to intervals
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...