Mesafe aralığındaki en hızlı zamanı hesaplamak için verimli algoritma

0

Soru

Bir veri dizisindeki en hızlı mesafe aralığını hesaplamak için hızlı ve çok fazla kaynak tüketmeyen etkili algoritma önerileri olup olmadığını bilmek isterim. Başka bir deyişle, bir veri kümesinden n metrelik bir aralıktaki minimum süreyi döndüren bir algoritma.

Örneğin:

Giriş

  • data_list: [{mesafe: 0, zaman: 0}, {mesafe:1 m, zaman: 2 s},{mesafe:4 m, zaman: 4 s}...{mesafe: 10000 m, zaman: 3600 s}]
  • mesafe aralığı: 345m

Çıktı

  • hızlı_ınterval_start_distance: 7655 m
  • hızlı_ınterval_end_distance: 8000 m
  • fastest_ınterval_time: n saniye

Teşekkür ederim

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

En iyi cevabı

0

Karmaşıklık çalışma süresi O(n) olan aşağıdaki çözümü oluşturdum. Zaten geçilen verileri yeniden hesaplamaktan kaçınmak için not alma yardımı ile.

Minimum süre ile ilişkili bir minimum dizin ve maksimum dizine sahip olarak çalışır.

  1. mın dizini dizin 0, saat 0 ve fastest_ınterval_start_distance 0 ile başlar
  2. maksimum dizin, distance_ınterval elde edilir edilmez atanır ve fastest_ınterval_end_distance, bu dizindeki mesafe değerini içerir
  3. veri öğeleri arasındaki zaman farkının toplamı fastest_ınterval_time dosyasında saklanır
  4. minimum dizin ve maksimum dizin, her veri öğesinde mesafe arttıkça ilerlemeye başlar.
  5. Mın ve max arasındaki zaman farklarının toplamı fastest_ınterval_time'dan küçükse, geçerli çıktı fastest_ınterval_start_distance ve fastest_ınterval_end_distance ve fastest_ınterval_time dahil olmak üzere güncelleştirilir
  6. Kenar durumları, veri kümesi boş olduğunda veya distance_ınterval toplam mesafeden büyük olduğunda içerir. Teşekkürler!
2021-11-24 02:13:06

Diğer dillerde

Bu sayfa diğer dillerde

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