Menu
CoddyTech

Non-overlapping Intervals

i aralığı starts[i] noktasından ends[i] noktasına kadar uzanır. Geriye kalan aralıkların hiçbiri birbiriyle çakışmayacak şekilde kaldırmanız gereken en az aralık sayısını döndürün. Biri diğerinin başladığı tam noktada biten ve yalnızca birbirine değen iki aralık çakışmaz.

Fonksiyon

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
her aralığın başlangıcı
endsinteger-array
her aralığın sonunda, 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ğildir. İ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]'dir. Yalnızca uç noktaları çakışan [2,3] ve [3,6] aralıklarını tutun, diğer 2 aralığı çıkarın. Üçü birden kalamaz: [1,4], [2,3] ile örtüşür ve [3,6], [5,7] ile örtüşür.
challenge icon

Ek soru

Her aralığın bir değeri olduğunu ve çakışmayan aralıklar arasından toplam değeri en yüksek olanı istediğini varsayalım. En önce biten aralığı seçmek hâlâ işe yarar mı?

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

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

2