2017-01-24 6 views
0

Есть ли какие-либо алгоритмы для выяснения всех отсутствующих временных интервалов в день.Как узнать все недостающие временные интервалы в день

Учитывая, что выбрано четыре временных интервала.

, например. Ожидаемый ввод: 08: 00-1259, 13: 45-17: 15, 14: 15-19: 00, 20: 00-23: 33

Я хотел бы узнать все отсутствующие временные интервалы на основе выбраны четыре временных интервала ниже критериев.

  1. выбранные временные интервалы могут перекрываться (например, 13: 45-17: 15, 14: 15-19: 59)
  2. игнорировать недостающий временной интервал, который позднее время окончания последнего временного интервала (например, не показывают все недостающие временной интервал после 23:33)

Ожидаемый результат: 13: 00-13: 44, 19: 01-19: 59

Вы можете попробовать даже если есть некоторые аналогичные алгоритмы, которые не соответствуют вышеприведенным критериям.

Update:

Я думаю, что это не достаточно эффективным для моего суда.

Я пытаюсь пропустить все «:» и перейду от 0 до 2359 и проверить, находится ли каждая минута в пределах четырех выбранных временных интервалов или нет. Однажды я узнал минута, которая не соответствует выбранным временным интервалам. Эта минута будет записана как время начала отсутствующего временного интервала. Затем, когда будет найдена следующая минута, которая находится в пределах этих четырех временных интервалов. Я миную эту минуту с 1 и записываю ее как время окончания отсутствующего временного интервала.

например. когда счетчик при 1300, 1300, будет рассматриваться как время начала недостающего временного интервала, и когда счетчик размещает на 1345 я минус одну минуту и ​​пометить время окончания как 1344.

+0

Пожалуйста, покажите нам, что вы пробовали до сих пор? –

+0

Обновлено. Как сказал sisanared, это довольно сложно для меня. Итак, я хочу знать, есть ли более эффективные алгоритмы для вычисления результата –

ответ

1
  1. Сортировка ввода по времени начала (ваш пример уже отсортирован).
  2. Для каждого интервала времени ввода, кроме последнего:
    • Если время окончания (плюс одна минута) раньше, чем на следующий момент начала, записать пробел.
1

Эффективность зависит от того, в какой форме ваши данные. Я могу думать о следующем способе, если данные хранятся в массиве, отсортированы с временем начала, с четным индексом как начальный и нечетный индексы, как время остановки слота.

Начало Конец

[0] 0100 [1] 0500

[2] 0200 [3] 0300 // случай слота полностью покрыт любого предыдущего временного интервал

[4] 0400 [ 5] 0900 // случай слота частично покрыт любой предыдущего временного интервал

[6] 1200 [7] 1500 // случай слота никогда не покрыт

*** Обозначение [х] YYYY: х индексов массив и YYYY - t IME

  1. MAX = элемент [0]
  2. Петля для всех индекса я
  3. ---- Если элемент [I]> MAX
  4. -------- Если я нечетно , MAX = элемент [я]
  5. -------- Else MAX к элементу [я] отсутствует слот
+0

Проголосовали. Это также правильный ответ. Я думаю, что это так здорово, но Джон Звинк на первом месте. Итак, я даю ему галочку. –

+0

Обратите внимание, что этот алгоритм также необходимо сначала отсортировать по времени начала –

 Смежные вопросы

  • Нет связанных вопросов^_^