56 / 205
LeetCode · EasyOson10 ball· ~20 daqiqa

Merge Sorted Array

Sizga ikkita kamaymaydigan (non-decreasing) tartibda joylashgan nums1 va nums2 butun sonlar massivlari, hamda mos ravishda ulardagi elementlar sonini bildiruvchi m va n butun sonlari berilgan.

nums1 va nums2 ni yagona tartiblangan massiv sifatida birlashtiring.

Yangi tartiblangan massiv funksiya tomonidan qaytarilmasdan, uning o'rniga nums1 massivi ichida saqlanishi kerak (in-place). Bunga moslashish uchun nums1 ning uzunligi m + n ga teng qilingan. Dastlabki m ta element saqlanishi kerak bo'lgan elementlar bo'lsa, oxirgi n ta element 0 qilib belgilangan va e'tiborga olinmasligi lozim.

Izoh: Bizning test tizimimizda in-place o'zgartirish o'rniga, siz birlashtirilgan massivni ([Int]) qaytaradigan funksiya yozishingiz talab etiladi.

example.go
func solve(nums1 []int, m int, nums2 []int, n int) []int {
    // ...
}

Misollar

kod
Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
Tushuntirish: [1,2,3] va [2,5,6] massivlari birlashtirildi.
kod
Input: nums1 = [1], m = 1, nums2 = [], n = 0
Output: [1]
kod
Input: nums1 = [0], m = 0, nums2 = [1], n = 1
Output: [1]

Maslahatlar

  1. Ikkala massiv allaqachon tartiblangan — ularni birlashtirishning eng samarali yo'li klassik "merge" (ikki ko'rsatkichli qo'shish) usulidir.
  2. Ikkala massivning boshidan ikkita indeks bilan yuring, har qadamda ikki tomondagi kichikroq qiymatni natijaga qo'shib mos indeksni oshiring; biri tugagach, ikkinchisining qolgan qismini to'g'ridan-to'g'ri natijaga qo'shib qo'ying.