Skuteczny algorytm do obliczania najszybszego czasu w przedziale odległości

0

Pytanie

Chciałbym wiedzieć, czy istnieją jakieś skuteczne porady dla algorytmów, które są szybkie i nie zużywa zbyt wiele zasobów, aby obliczyć najszybszą przedziału odległości w sekwencji danych. Innymi słowy, łódź, który zwraca minimalną ilość czasu na przedziale n m ze zbioru danych.

Np.:

Enter

  • lista danych: [{odległość: 0, czas:0},{odległość: 1 m, czas:2},{odległości: 4 m, czas:4}...{dystans:10000 m, czas: 3600 z}]
  • дистанция_интервал: 345 m

Wyjście

  • najszybszy расстояние_интервала_старта: 7655 m
  • najszybszy расстояние_интервала: 8000 m
  • najszybszy время_интервала: n sekund

Dziękuję

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

Najlepsza odpowiedź

0

Stworzyłem następujący rozwiązanie, które ma czas wykonywania złożoności O(n). Z pomocą zapamiętywania, aby uniknąć ponownego obliczenia danych, które już zostały wykonane.

To działa, mając minimalny indeks i maksymalny indeks, które są związane z minimalnym czasem.

  1. minimalny indeks zaczyna się od indeksu 0, czas 0 i 0 fastest_interval_start_distance
  2. maksymalny wskaźnik przypisany, jak tylko osiąga wartość distance_interval, i fastest_interval_end_distance zawiera wartość odległości przy takim indeksie
  3. kwota różnicy czasu między elementami danych jest przechowywany w fastest_interval_time
  4. minimalny indeks i maksymalny indeks zaczynają się poruszać do przodu w miarę zwiększania odległości z każdego elementu danych.
  5. Jeśli kwota różnic w czasie pomiędzy min i max jest mniejsza niż fastest_interval_time, aktualny wydruk aktualizowane, w tym fastest_interval_start_distance i fastest_interval_end_distance i fastest_interval_time
  6. Skrajne przypadki obejmują przypadki, gdy zbiór danych jest pusta lub wartość distance_interval przekracza całkowity dystans. Dziękuję!
2021-11-24 02:13:06

W innych językach

Ta strona jest w innych językach

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