LeetCode solutions

1216. Print Zero Even Odd

My accepted Python solution to LeetCode problem 1216, Print Zero Even Odd, running in 50ms.

  • Difficulty: Medium
  • Python
  • Runtime 50ms
  • Memory 18.4MB

Read the problem on LeetCode View on GitHub

Python

Accepted on LeetCode — runtime 50ms, memory 18.4MB, accepted 2026-01-02.

python
from threading import Semaphore

class ZeroEvenOdd:
    def __init__(self, n):
        self.n = n
        self.zero_sem = Semaphore(1)
        self.odd_sem = Semaphore(0)
        self.even_sem = Semaphore(0)
        
    def zero(self, printNumber: 'Callable[[int], None]') -> None:
        for i in range(1, self.n + 1):
            self.zero_sem.acquire()
            printNumber(0)
            if i % 2 == 1:
                self.odd_sem.release()
            else:
                self.even_sem.release()
        
    def even(self, printNumber: 'Callable[[int], None]') -> None:
        for i in range(2, self.n + 1, 2):
            self.even_sem.acquire()
            printNumber(i)
            self.zero_sem.release()
        
    def odd(self, printNumber: 'Callable[[int], None]') -> None:
        for i in range(1, self.n + 1, 2):
            self.odd_sem.acquire()
            printNumber(i)
            self.zero_sem.release()

Source