959. Regions Cut By Slashes

959. Regions Cut By Slashes

959. Regions Cut By Slashes

Medium

Topics: Array, Hash Table, Depth-First Search, Breadth-First Search, Union Find, Matrix

An n x n grid is composed of 1 x 1 squares where each 1 x 1 square consists of a ‘/’, ”, or blank space ‘ ‘. These characters divide the square into contiguous regions.

Given the grid grid represented as a string array, return the number of regions.

Note that backslash characters are escaped, so a ” is represented as ‘\’.

Example 1:

Input: grid = [” /”,”/ “]

Output: 2

Example 2:

Input: grid = [” /”,” “]

Output: 1

Example 3:

Input: grid = [“/”,”/”]

Output: 5

Explanation: Recall that because characters are escaped, “/” refers to /, and “/” refers to /.

Constraints:

n == grid.length == grid[i].length
1 <= n <= 30

grid[i][j] is either ‘/’, ”, or ‘ ‘.

Solution:

We can represent each 1×1 square as 4 triangles, which allows us to apply a Union-Find (Disjoint Set Union, DSU) algorithm to count the distinct regions.

Step-by-Step Approach:

Grid Representation:

We treat each 1×1 square as 4 triangles:

Top-left triangle
Top-right triangle
Bottom-left triangle
Bottom-right triangle

Each of these triangles is represented by an index in the Union-Find structure.

Mapping Characters:

If the square is ‘ ‘, all 4 triangles within it are connected.
If the square is ‘/’, the top-left triangle is connected to the bottom-right, and the top-right triangle is connected to the bottom-left.
If the square is ”, the top-left triangle is connected to the top-right, and the bottom-left triangle is connected to the bottom-right.

Connecting Adjacent Cells:

We connect the triangles of adjacent cells across the grid’s boundaries. This ensures that regions spanning multiple cells are properly connected.

Counting the Regions:

We count the number of unique sets in the Union-Find structure, which corresponds to the number of regions.

Let’s implement this solution in PHP: 959. Regions Cut By Slashes

<?php
// Test cases
$grid1 = [” /”, “/ “];
$grid2 = [” /”, ” “];
$grid3 = [“/\, \/”];

echo regionsBySlashes($grid1); // Output: 2
echo regionsBySlashes($grid2); // Output: 1
echo regionsBySlashes($grid3); // Output: 5
?>

Explanation:

The UnionFind class is used to manage the connected components (regions) in the grid.
For each cell in the grid, we apply the union operation based on the character (‘/’, ”, or ‘ ‘).
Finally, the number of unique regions is determined by counting the distinct root parents in the Union-Find structure.

This solution efficiently handles the problem within the given constraints.

Contact Links

If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!

If you want more helpful content like this, feel free to follow me:

LinkedIn
GitHub

Please follow and like us:
Pin Share