Menu
CoddyTech

Merge Intervals

Sana, her biri başlangıçtan bitişe kadar tam sayılardan oluşan bir aralık olan bir aralık kümesi verilir. Örtüşen her aralık grubunu tüm grubu kapsayan tek bir aralıkta birleştir ve birleştirilmiş aralıkları başlangıçlarına göre sıralı olarak döndür. Yalnızca uç noktaları çakışan [1, 4] ve [4, 5] gibi aralıklar da örtüşüyor sayılır.

Aralıklar aynı uzunluktaki iki dizi olarak verilir: i aralığı [starts[i], ends[i]] şeklindedir. [start, end] çiftlerinden oluşan bir liste olan 2 boyutlu bir dizi döndürürsün.

Fonksiyon

mergeIntervals(starts: integer-array, ends: integer-array) → integer-2d-array
startsinteger-array
her aralığın başlangıcı
endsinteger-array
her aralığın sonunda, başlangıcıyla aynı indekste
Döndürürinteger-2d-array
birleştirilmiş aralıklar, başlangıca göre sıralanmış [start, end] çiftleri olarak

Kısıtlar

  • 1 ≤ starts.length == ends.length ≤ 104
  • 0 ≤ starts[i] ≤ ends[i] ≤ 104
  • Aralıklar herhangi bir sırayla gelir.
  • Yalnızca uç noktalarında temas eden aralıklar çakışıyor sayılır.

Örnekler

Girdi
starts = [5, 1, 12, 3]ends = [7, 4, 14, 6]
Çıktı
[[1, 7], [12, 14]]
Açıklama
Başlangıç sırasına göre [1, 4], [3, 6] ile çakışır; [3, 6] da [5, 7] ile çakışır, bu yüzden üçü [1, 7] olur. [12, 14], 7'den sonra başlar ve tek başına kalır.
challenge icon

Ek soru

Aralıklar zaten birleştirilmiş ve başlangıç değerlerine göre sıralanmış olarak geliyor; senin de yeni bir aralık eklemen gerekiyor. Yeniden sıralama yapmadan, birleştirilmiş listeyi O(n) sürede döndürebilir misin?

Kodu sıfırla
def mergeIntervals(starts, ends):
    # Kodu buraya yazın

Test #1

Test #2

Argümanlar

starts = [5, 1, 12, 3]
ends = [7, 4, 14, 6]

Beklenen Çıktı

[[1, 7], [12, 14]]