Menu
CoddyTech

Insert Interval

OrtaAralıklarpython iconjava iconcpp iconc iconjs icon+10

Başlangıç değerine göre sıralanmış aralıklar iki dizi olarak verilir: i aralığı [starts[i], ends[i]] şeklindedir ve hiçbir ikisi üst üste gelmez veya birbirine değmez. Yeni [newStart, newEnd] aralığını ekleyin, üst üste geldiği veya değdiği her aralıkla birleştirin ve tüm aralıkları başlangıç değerine göre sıralanmış [start, end] çiftleri olarak döndürün.

Aralıklar, biri diğerinin başladığı yerde sona erdiğinde birbirine değer; örneğin [2, 4] ve [4, 8] gibi. Birbirine değen aralıklar birleştirilir. [1, 2] ve [3, 4] hiçbir noktayı paylaşmadığından ayrı kalır.

Fonksiyon

insertInterval(starts: integer-array, ends: integer-array, newStart: integer, newEnd: integer) → integer-2d-array
startsinteger-array
her aralığın başlangıcı, artan sırayla
endsinteger-array
her aralığın sonu, başlangıçlarla eşleşir
newStartinteger
eklenecek aralığın başlangıcı
newEndinteger
eklenecek aralığın sonu
Döndürürinteger-2d-array
eklemeden sonraki aralıkları, başlangıca göre sıralanmış [start, end] çiftleri olarak

Kısıtlar

  • 1 ≤ starts.length == ends.length ≤ 2000
  • 0 ≤ starts[i] ≤ ends[i] ≤ 105
  • ends[i] < starts[i+1]: aralıklar başlangıç zamanlarına göre sıralıdır ve hiçbiri birbiriyle çakışmaz veya birbirine değmez.
  • 0 ≤ newStart ≤ newEnd ≤ 105

Örnekler

Girdi
starts = [1, 5, 10, 15]ends = [3, 7, 12, 18]newStart = 6newEnd = 11
Çıktı
[[1, 3], [5, 12], [15, 18]]
Açıklama
[6, 11], [5, 7] ve [10, 12] ile örtüşür; bu nedenle üçü [5, 12] olur. [1, 3], 6'dan önce biter ve [15, 18], 12'den sonra başlar; bu nedenle ikisi de olduğu gibi kalır.
challenge icon

Ek soru

Birbiri ardına çok sayıda aralık eklersen, her ekleme O(log n) maliyetine ve yuttuğu her eski aralık için bir adıma mal olacak şekilde bunları nasıl saklarsın?

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

Test #1

Test #2

Test #3

Argümanlar

starts = [1, 5, 10, 15]
ends = [3, 7, 12, 18]
newStart = 6
newEnd = 11

Beklenen Çıktı

[[1, 3], [5, 12], [15, 18]]