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

Product of Array Except Self

Sizga butun sonlardan iborat nums massivi berilgan. Siz answer massivini qaytarishingiz kerak bo'lib, bunda answer[i] qiymati nums[i] bundan tashqari massivdagi barcha elementlarning ko'paytmasiga teng bo'ladi.

Yechim O(n) vaqt murakkabligida ishlashi va bo'linish operatorini ishlatmagan holda hal etilishi kerak.

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

Misollar

kod
Input: nums = [1,2,3,4]
Output: [24,12,8,6]
Tushuntirish:
answer[0] = 2 * 3 * 4 = 24
answer[1] = 1 * 3 * 4 = 12
answer[2] = 1 * 2 * 4 = 8
answer[3] = 1 * 2 * 3 = 6
kod
Input: nums = [-1,1,0,-3,3]
Output: [0, 0, 9, 0, 0]
kod
Input: nums = [2, 3]
Output: [3, 2]
kod
Input: nums = [0, 0]
Output: [0, 0]

Maslahatlar

  1. Bo'lishsiz yechish uchun har bir indeksdagi javobni "chapdagi barcha elementlar ko'paytmasi" va "o'ngdagi barcha elementlar ko'paytmasi"ning ko'paytmasi sifatida ikki bosqichda hisoblashni o'ylab ko'ring.
  2. Avval chapdan o'ngga yurib, har bir indeksga o'zidan oldingi barcha elementlar ko'paytmasini yozib chiqing (natija massivida); so'ng o'ngdan chapga yurib, o'zgaruvchida o'ngdagi elementlar ko'paytmasini saqlab, uni natijadagi mos elementga ko'paytirib boring.