Menu
CoddyTech

Non-overlapping Intervals

Interval i berlangsung dari starts[i] hingga ends[i]. Kembalikan jumlah interval paling sedikit yang harus kamu hapus agar tidak ada dua interval yang tersisa saling tumpang tindih. Dua interval yang hanya bersentuhan, yaitu saat satu interval berakhir tepat di titik interval lainnya dimulai, tidak saling tumpang tindih.

Fungsi

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
awal setiap interval
endsinteger-array
akhir setiap interval, pada indeks yang sama dengan awalnya
Mengembalikaninteger
interval sesedikit mungkin yang harus dihapus agar sisanya tidak saling tumpang tindih

Batasan

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • Interval tidak diurutkan. Dua interval bisa identik.

Contoh

Input
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
Output
2
Penjelasan
Dalam urutan awal, intervalnya adalah [1,4], [2,3], [3,6], dan [5,7]. Pertahankan [2,3] dan [3,6], yang hanya bersentuhan, lalu hapus 2 lainnya. Tiga interval tidak bisa dipertahankan: [1,4] tumpang tindih dengan [2,3], dan [3,6] tumpang tindih dengan [5,7].
challenge icon

Pertanyaan lanjutan

Misalkan setiap interval memiliki nilai dan kamu ingin mendapatkan total nilai terbesar dari interval-interval yang tidak tumpang tindih. Apakah memilih interval yang berakhir paling awal masih berhasil?

Reset kode
def eraseOverlapIntervals(starts, ends):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

2