Prison Cells After N Days - 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: Because the prison is a row, the first and 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).

Input & Output

Example 1 — Basic Transformation
$ Input: cells = [0,1,0,1,1,0,0,1], n = 7
Output: [0,0,0,0,0,0,0,0]
💡 Note: After 7 days of applying the transformation rules, all cells become vacant. The transformation quickly converges to all zeros for this initial state.
Example 2 — Single Day
$ Input: cells = [1,0,0,1,0,0,1,0], n = 1
Output: [0,0,0,1,0,0,1,0]
💡 Note: After one day: cell[3] becomes 1 (neighbors 0,0 are same), cell[6] becomes 1 (neighbors 0,0 are same), all other middle cells become 0 due to different neighbors, and edge cells become 0.
Example 3 — No Change Needed
$ Input: cells = [1,1,1,1,1,1,1,1], n = 0
Output: [1,1,1,1,1,1,1,1]
💡 Note: When n = 0, no days pass so the cells remain unchanged from the initial state.

Constraints

  • cells.length == 8
  • cells[i] is either 0 or 1
  • 1 ≤ n ≤ 109

Visualization

Tap to expand
Prison Cells After N Days INPUT 8 Prison Cells (Day 0) 0 1 0 1 1 0 0 1 0 1 2 3 4 5 6 7 Rules: If both neighbors same: cell becomes 1 (occupied) If neighbors different: cell becomes 0 (vacant) Input Values: cells = [0,1,0,1,1,0,0,1] n = 7 = Occupied (1) = Vacant (0) ALGORITHM STEPS 1 Simulate Days Apply rules each day 2 Track States Store each day's config 3 Detect Cycle Find repeating pattern 4 Use Modulo n % cycle_length Cycle Detection Table: Day 0: 01011001 Day 1: 01100110 Day 2: 00011100 Day 3: 00100010 Day 4: 01010100 Day 5: 00000010 Day 6: 00000100 Day 7: 00110000 Cycle = 14 FINAL RESULT Prison State After 7 Days 0 0 1 1 0 0 0 0 0 1 2 3 4 5 6 7 Output Array: [0,0,1,1,0,0,0,0] Calculation: Cycle length = 14 days n = 7 7 % 14 = 7 Return state at day 7 OK - Verified Key Insight: The prison cells form a finite state machine with at most 2^6 = 64 possible states (cells 0 and 7 are always 0). This means patterns MUST repeat within 64 days. By detecting the cycle length, we can compute the answer for any N using modulo arithmetic: O(min(N, 64)) time instead of O(N). Typical cycle length is 14. TutorialsPoint - Prison Cells After N Days | Cycle Detection Approach
Asked in
Google 15 Amazon 12 Microsoft 8 Facebook 6
67.0K Views
Medium Frequency
~25 min Avg. Time
892 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen