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:
- Massivni aylanib chiqib, barcha nol bo'lmagan elementlarni boshiga ko'chiring.
- 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.