1186. Building H2O
My accepted Python solution to LeetCode problem 1186, Building H2O, running in 60ms.
- Difficulty: Medium
- Python
- Runtime 60ms
- Memory 17.6MB
- 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 60ms, memory 17.6MB, accepted 2026-01-02.
from threading import Barrier, Semaphore
class H2O:
def __init__(self):
self.barrier = Barrier(3)
self.h_sem = Semaphore(2)
self.o_sem = Semaphore(1)
def hydrogen(self, releaseHydrogen: 'Callable[[], None]') -> None:
self.h_sem.acquire()
self.barrier.wait()
releaseHydrogen()
self.h_sem.release()
def oxygen(self, releaseOxygen: 'Callable[[], None]') -> None:
self.o_sem.acquire()
self.barrier.wait()
releaseOxygen()
self.o_sem.release()