Sobes.tech
Middle — Senior

Pythonда массивтеги нөлдөрдү эсептеп, жылдыруу алгоритмин кантип ишке ашыруу керек?

sobes.tech AI

AIден жооп

Pythonда нөлдөрдүн санын эсептеп, бардык нөлдөрдү массивдин акырында жайгаштыруу үчүн төмөнкү алгоритмди колдонсо болот:

  1. Массив аркылуу өтүп, бардык нөл эмес элементтерди башында көчүрүңүз.
  2. Калган орундарды нөлдөр менен толтуруңуз.

Иштөө мисалы:

from typing import List

def move_zeros(nums: List[int]) -> None:
    """Бардык нөлдөрдү массивдин акырында жылдырып, нөл эмес элементтердин тартибин сактайт."""
    insert_pos = 0
    for num in nums:
        if num != 0:
            nums[insert_pos] = num
            insert_pos += 1
    # Калган орундарды нөлдөр менен толтуруңуз
    for i in range(insert_pos, len(nums)):
        nums[i] = 0

# Колдонуу мисалы
arr = [0, 1, 0, 3, 12]
move_zeros(arr)
print(arr)  # Натыйжа: [1, 3, 12, 0, 0]

Бул алгоритм убакытта O(n) иштейт жана кошумча эс тутум O(1) талап кылат.