Эффективный алгоритм для вычисления самого быстрого времени на интервале расстояний

0

Вопрос

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

Напр.:

Ввод

  • список данных: [{расстояние: 0, время:0},{расстояние: 1 м, время:2 с},{расстояние: 4 м, время:4 с}...{расстояние:10000 м, время: 3600 с}]
  • дистанция_интервал: 345 м

Выход

  • самое быстрое расстояние_интервала_старта: 7655 м
  • самое быстрое расстояние_интервала: 8000 м
  • самое быстрое время_интервала: n секунд

Спасибо

algorithm
2021-11-23 23:52:19
1

Лучший ответ

0

Я создал следующее решение, которое имеет время выполнения сложности O(n). С помощью запоминания, чтобы избежать повторного вычисления данных, которые уже были пройдены.

Он работает, имея минимальный индекс и максимальный индекс, которые связаны с минимальным временем.

  1. минимальный индекс начинается с индекса 0, времени 0 и fastest_interval_start_distance 0
  2. максимальный индекс присваивается, как только достигается значение distance_interval, и fastest_interval_end_distance содержит значение расстояния при таком индексе
  3. сумма разницы во времени между элементами данных хранится в fastest_interval_time
  4. минимальный индекс и максимальный индекс начинают двигаться вперед по мере увеличения расстояния с каждым элементом данных.
  5. Если сумма разностей во времени между min и max меньше, чем fastest_interval_time, текущий вывод обновляется, включая fastest_interval_start_distance и fastest_interval_end_distance и fastest_interval_time
  6. Крайние случаи включают случаи, когда набор данных пуст или значение distance_interval превышает общее расстояние. Спасибо!
2021-11-24 02:13:06

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................