131 / 205
LeetCode · MediumO'rta20 ball· ~25 daqiqa

Merge Intervals

Sizga intervals massivi berilgan bo'lib, uning har bir elementi intervals[i] = [start_i, end_i] ko'rinishida oraliqni bildiradi. Barcha o'zaro kesishadigan oraliqlarni birlashtiring va faqatgina kesishmaydigan oraliqlardan tashkil topgan massivni qaytaring.

example.go
func solve(intervals [][]int) [][]int {
    // ...
}

Misollar

kod
Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Tushuntirish: [1,3] va [2,6] oraliqlar o'zaro kesishganligi sababli ular [1,6] ga birlashtirildi.
kod
Input: intervals = [[1,4],[4,5]]
Output: [[1, 5]]
kod
Input: intervals = [[1,4],[0,4]]
Output: [[0, 4]]

Maslahatlar

  1. Kesishuvni tekshirish uchun oraliqlarni qandaydir tartibga solish foydali bo'ladi — boshlanish nuqtasi bo'yicha saralashni o'ylab ko'ring, shunda kesishuvchi oraliqlar bir-biriga yaqin joylashadi.
  2. Oraliqlarni boshlanish qiymati bo'yicha o'sish tartibida saralang, so'ng natija ro'yxatini yuritib boring: agar joriy oraliqning boshlanishi oxirgi qo'shilgan oraliqning tugashidan katta bo'lmasa (kesishadi), ularning tugash qiymatlarining kattasini olib birlashtiring, aks holda joriy oraliqni yangi element sifatida ro'yxatga qo'shing.