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
- Updated
Read the problem on LeetCode View on GitHub
The problem statement is LeetCode’s and stays on their site. What follows is my accepted solution.
Python
Accepted on LeetCode — runtime 50ms, memory 18.4MB, accepted 2026-01-02.
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()