Menu
CoddyTech

Non-overlapping Intervals

Aralıkların listesini iki dizi olarak alırsın: i aralığı starts[i] noktasından ends[i] noktasına kadar uzanır. Geriye kalan aralıklardan hiçbiri çakışmayacak şekilde mümkün olduğunca az aralığı kaldır. Yalnızca birbirine dokunan, yani birinin bittiği noktanın diğerinin başladığı noktayla tam olarak aynı olduğu iki aralık çakışmaz.

Kaldırman gereken en küçük aralık sayısını döndüren eraseOverlapIntervals adlı bir fonksiyon yaz.

Fonksiyon

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
her aralığın başlangıcı
endsinteger-array
her aralığın bitişi, başlangıcıyla aynı indekste
Döndürürinteger
Geriye kalanların çakışmaması için kaldırılması gereken en az aralık sayısı

Kısıtlar

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • Aralıklar sıralı değil. İki aralık aynı olabilir.

Örnekler

Girdi
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
Çıktı
2
Açıklama
Başlangıç sırasına göre aralıklar [1,4], [2,3], [3,6] ve [5,7] şeklindedir. Yalnızca uç noktaları çakışan [2,3] ve [3,6] aralıklarını tutun, diğer 2 aralığı kaldırın. Üç aralığı tutamazsınız: [1,4], [2,3] ile çakışır ve [3,6], [5,7] ile çakışır; dört aralıktan seçilecek herhangi üçü bu çiftlerden birini içerir.

lock iconGönderirken +17 gizli test

challenge icon

Ek soru

Her aralığın bir değeri olduğunu ve çakışmayan aralıklar arasındaki toplam değerin en büyüğünü istediğini varsayalım. En erken biten aralığı tutmak yine işe yarar mı? Bunun yerine ne kullanırdın?

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

2