Efficiente algoritmo per il calcolo del miglior tempo, l'intervallo di distanza

0

Domanda

Vorrei sapere se ci sono qualsiasi algoritmo efficiente raccomandazioni, che sono veloce e non consuma molte risorse di computing più veloce intervallo di distanza in una sequenza di dati. In altre parole un algoritmo che restituisce la quantità minima di tempo in un intervallo di n metri, da un set di dati.

Ad esempio:

Ingresso

  • data_list: [{distanza: 0 ore:0},{distanza: 1m, tempo:2s},{distanza: 4 m, tempo:4s}...{distanza:10000m, tempo: 3600s}]
  • distance_interval: 345m

Uscita

  • fastest_interval_start_distance: 7655 m
  • fastest_interval_end_distance: 8000 m
  • fastest_interval_time: n secondi

Grazie

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

Migliore risposta

0

Ho creato la seguente soluzione che ha una complessità di tempo di esecuzione O(n). Con l'aiuto di memoization per evitare il ricalcolo dei dati che è già stata percorsa.

Funziona da avere un minimo di indice e max indice che sono associati con il tempo minimo.

  1. min indice inizia a indice 0, 0, e fastest_interval_start_distance 0
  2. max indice è assegnato appena distance_interval è raggiunto e fastest_interval_end_distance contiene il valore della distanza in tale indice
  3. la somma della differenza oraria tra gli elementi di dati memorizzati in fastest_interval_time
  4. min indice e max indice di iniziare a muoversi in avanti, come si aumenta la distanza con ogni elemento di dati.
  5. Se la somma delle differenze di tempo tra min e max è a meno di fastest_interval_time, la corrente di uscita è aggiornata includendo fastest_interval_start_distance e fastest_interval_end_distance e fastest_interval_time
  6. Casi di bordo includono quando il set di dati è vuota o distance_interval è maggiore della distanza totale. Grazie!
2021-11-24 02:13:06

In altre lingue

Questa pagina è in altre lingue

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