53 / 205
LeetCode · EasyOson10 ball· ~10 daqiqa

Make Array Zero by Subtracting Equal Amounts

Sizga manfiy bo'lmagan butun sonlardan iborat nums massivi berilgan.

Bir operatsiyada siz massivdagi noldan katta bo'lgan eng kichik elementni tanlaysiz va uni massivdagi barcha noldan katta bo'lgan elementlardan ayirib chiqasiz.

Massivning barcha elementlari 0 ga aylanguncha necha marta operatsiya qilish kerakligini toping.

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

Misollar

kod
Input: nums = [1,5,0,3,5]
Output: 3
Tushuntirish:
1-qadam: noldan katta eng kichik son 1. Ayiramiz: [0,4,0,2,4].
2-qadam: noldan katta eng kichik son 2. Ayiramiz: [0,2,0,0,2].
3-qadam: noldan katta eng kichik son 2. Ayiramiz: [0,0,0,0,0].
Jami 3 operatsiya.
kod
Input: nums = [0]
Output: 0
kod
Input: nums = [1, 1, 1]
Output: 1
kod
Input: nums = [2, 4, 6, 4]
Output: 3

Maslahatlar

  1. Har bir operatsiya massivdagi aynan bitta noyob musbat qiymatni butunlay yo'qotadi — bu massivdagi turli (distinct) musbat qiymatlar soni bilan bog'liqligini o'ylang.
  2. Nolga teng bo'lmagan elementlarni to'plamga (set/map) joylang; to'plamda nechta turli qiymat qolsa, javob shuncha bo'ladi, chunki har operatsiya bitta eng kichik noyob qiymatni butunlay olib tashlaydi.