Skip to main content
LeetCode 957, Medium. Topics: Array, Hash Table, Math, Bit Manipulation. View on LeetCode. Generate this problem as a practice environment: tested reference solution, 15 parametrized pytest cases, and a playground notebook:

Problem

There are 8 prison cells in a row and each cell is either occupied or vacant. Each day, whether the cell is occupied or vacant changes according to the following rules:
  • If a cell has two adjacent neighbors that are both occupied or both vacant, then the cell becomes occupied.
  • Otherwise, it becomes vacant.
Note that because the prison is a row, the first and the last cells in the row can’t have two adjacent neighbors. You are given an integer array cells where cells[i] == 1 if the ith cell is occupied and cells[i] == 0 if the ith cell is vacant, and you are given an integer n. Return the state of the prison after n days (i.e., n such changes described above).

Examples

Constraints

  • cells.length == 8
  • cells[i] is either 0 or 1.
  • 1 <= n <= 10^9
Follow up: Could you solve it with O(1) extra space with respect to the number of days?

Solution

Reference implementation from solution.py on GitHub, full suite in test_solution.py:

Complexity

Tags

Last modified on September 7, 2026