#3240

Minimum Number of Flips to Make Binary Grid Palindromic II

Medium
ArrayTwo PointersMatrixTwo PointersMatrix Manipulation
LeetCode ↗

Approaches

Brute ForceOptimal
Complexity Comparison
Brute ForceOptimal Solution
Time
O(n²)
O(n)
Space
O(1)
O(1)
💡

Intuition

Time O(n)Space O(1)

The optimal solution leverages symmetry in the grid to minimize the number of flips. By focusing on pairs of cells that must match, we can efficiently calculate the required flips without checking every combination.

⚙️

Algorithm

4 steps
  1. 1Step 1: Initialize a flip counter and iterate through the first half of the grid.
  2. 2Step 2: For each cell, identify its symmetric counterparts and count the number of 1's and 0's.
  3. 3Step 3: Calculate the minimum flips needed to make all symmetric cells the same.
  4. 4Step 4: After processing the grid, ensure the total number of 1's is divisible by 4.
solution.py14 lines
1def minFlips(grid):
2    m, n = len(grid), len(grid[0])
3    flips = 0
4    for i in range((m + 1) // 2):
5        for j in range((n + 1) // 2):
6            count = [0, 0]
7            for x in [i, m - 1 - i]:
8                for y in [j, n - 1 - j]:
9                    count[grid[x][y]] += 1
10            flips += min(count[0], count[1])
11    total_ones = sum(sum(row) for row in grid)
12    if total_ones % 4 != 0:
13        flips += 1
14    return flips

Complexity note: The time complexity is O(n) because we are effectively processing each cell in the grid a limited number of times, focusing on symmetry. The space complexity is O(1) as we are using a constant amount of extra space.

  • 1Understanding symmetry is crucial for minimizing flips.
  • 2The total number of 1's must be adjusted to meet divisibility requirements.

Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.