Sobes.tech
Middle — Senior

Python'da massivda nolalarni hisoblash va siljitish algoritmini qanday amalga oshirish mumkin?

sobes.tech AI

AIdan javob

Python'da nolarning sonini hisoblash va barcha nolarning massiv oxiriga o'tkazish uchun quyidagi algoritmni ishlatish mumkin:

  1. Massivni aylanib chiqib, barcha nol bo'lmagan elementlarni boshiga ko'chiring.
  2. Qolgan pozitsiyalarni nol bilan to'ldiring.

Misol uchun amalga oshirish:

from typing import List

def move_zeros(nums: List[int]) -> None:
    """Barcha nolarni massiv oxiriga o'tkazadi, nol bo'lmagan elementlarning tartibini saqlab."""
    insert_pos = 0
    for num in nums:
        if num != 0:
            nums[insert_pos] = num
            insert_pos += 1
    # Qolgan joylarni nol bilan to'ldiring
    for i in range(insert_pos, len(nums)):
        nums[i] = 0

# Misol uchun foydalanish
arr = [0, 1, 0, 3, 12]
move_zeros(arr)
print(arr)  # Chiqish: [1, 3, 12, 0, 0]

Ushbu algoritm O(n) vaqt ichida ishlaydi va qo'shimcha xotira uchun O(1) talab qiladi.