Menu
CoddyTech

Merge Intervals

Kamu mendapatkan sekumpulan interval, masing-masing berupa rentang bilangan bulat dari awal hingga akhir. Gabungkan setiap kelompok interval yang saling tumpang tindih menjadi satu interval yang mencakup seluruh kelompok, lalu kembalikan interval hasil penggabungan yang diurutkan berdasarkan nilai awal. Interval yang hanya bersentuhan, seperti [1, 4] dan [4, 5], dianggap saling tumpang tindih.

Interval diberikan dalam dua array dengan panjang yang sama: interval i adalah [starts[i], ends[i]]. Kamu mengembalikan array 2D, yaitu daftar pasangan [start, end].

Fungsi

mergeIntervals(starts: integer-array, ends: integer-array) → integer-2d-array
startsinteger-array
awal setiap interval
endsinteger-array
ujung setiap interval, pada indeks yang sama dengan awalnya
Mengembalikaninteger-2d-array
interval yang telah digabungkan dalam bentuk pasangan [start, end], diurutkan berdasarkan start

Batasan

  • 1 ≤ starts.length == ends.length ≤ 104
  • 0 ≤ starts[i] ≤ ends[i] ≤ 104
  • Interval tiba dalam urutan apa pun.
  • Interval yang hanya bersentuhan di ujungnya dianggap saling tumpang tindih.

Contoh

Input
starts = [5, 1, 12, 3]ends = [7, 4, 14, 6]
Output
[[1, 7], [12, 14]]
Penjelasan
Urut berdasarkan waktu mulai, [1, 4] bertumpang tindih dengan [3, 6], yang bertumpang tindih dengan [5, 7], sehingga ketiganya menjadi [1, 7]. [12, 14] dimulai setelah 7 dan tetap terpisah.
challenge icon

Pertanyaan lanjutan

Interval sudah diberikan dalam keadaan digabungkan dan diurutkan berdasarkan titik awalnya, dan kamu harus menambahkan satu interval baru. Bisakah kamu mengembalikan list yang sudah digabungkan dalam waktu O(n), tanpa mengurutkannya lagi?

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

Tes #1

Tes #2

Argumen

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

Output yang diharapkan

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