Sobes.tech
Middle — Senior

Kaip įgyvendinti algoritmą, skaičiuojantį ir perkeliantį nulinius elementus masyve Python?

sobes.tech AI

Atsakymas iš AI

Norint suskaičiuoti nulinių elementų skaičių ir perkelti visus nulinius elementus į masyvo pabaigą Python'e, galima naudoti šį algoritmą:

  1. Pereiti per masyvą ir nukopijuoti visus nulių neturinčius elementus į pradžią.
  2. Užpildyti likusias pozicijas nuliais.

Pavyzdinis įgyvendinimas:

from typing import List

def move_zeros(nums: List[int]) -> None:
    """Perkelia visus nulius į masyvo pabaigą, išlaikant nenulių elementų tvarką."""
    insert_pos = 0
    for num in nums:
        if num != 0:
            nums[insert_pos] = num
            insert_pos += 1
    # Užpildyti likusias pozicijas nuliais
    for i in range(insert_pos, len(nums)):
        nums[i] = 0

# Pavyzdinis naudojimas
arr = [0, 1, 0, 3, 12]
move_zeros(arr)
print(arr)  # Išvestis: [1, 3, 12, 0, 0]

Šis algoritmas veikia laike O(n) ir reikalauja papildomos atminties O(1).