Sobes.tech
Middle — Senior

Hogyan valósítható meg egy algoritmus nullák számolására és eltolására egy tömbben Pythonban?

sobes.tech MI

Válasz az MI-től

A Pythonban a nullák számának meghatározásához és az összes nullának a tömb végére való mozgatásához az alábbi algoritmust használhatja:

  1. Iteráljon végig a tömbön, és másolja az összes nem null értéket az elejére.
  2. Töltse ki a maradék pozíciókat nullákkal.

Implementációs példa:

from typing import List

def move_zeros(nums: List[int]) -> None:
    """Minden nullát a tömb végére mozgat, megőrizve a nem null értékek sorrendjét."""
    insert_pos = 0
    for num in nums:
        if num != 0:
            nums[insert_pos] = num
            insert_pos += 1
    # Töltse ki nullákkal
    for i in range(insert_pos, len(nums)):
        nums[i] = 0

# Használati példa
arr = [0, 1, 0, 3, 12]
move_zeros(arr)
print(arr)  # Kimenet: [1, 3, 12, 0, 0]

Ez az algoritmus O(n) időben működik, és O(1) extra memóriát igényel.