LeetCode solutions

1186. Building H2O

My accepted Python solution to LeetCode problem 1186, Building H2O, running in 60ms.

  • Difficulty: Medium
  • Python
  • Runtime 60ms
  • Memory 17.6MB

Read the problem on LeetCode View on GitHub

Python

Accepted on LeetCode — runtime 60ms, memory 17.6MB, accepted 2026-01-02.

python
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()

Source