16.19. Pond Sizes
Description
You have an integer matrix representing a plot of land, where the value at that location represents the height above sea level. A value of zero indicates water. A pond is a region of water connected vertically, horizontally, or diagonally. The size of the pond is the total number of connected water cells. Write a method to compute the sizes of all ponds in the matrix.
Example:
Input: [ [0,2,1,0], [0,1,0,1], [1,1,0,1], [0,1,0,1] ] Output: [1,2,4]
Note:
0 < len(land) <= 1000
0 < len(land[i]) <= 1000
Solutions
Solution 1: DFS
We can traverse each point $(i, j)$ in the integer matrix $land$. If the value of the point is $0$, we start a depth-first search from this point until we reach a point with a non-zero value. The number of points searched during this process is the size of the pond, which is added to the answer array.
Note: To avoid duplicate searches, we set the value of the searched points to $1$.
Finally, we sort the answer array to obtain the final answer.
The time complexity is $O(m \times n \times \log (m \times n))$, and the space complexity is $O(m \times n)$. Here, $m$ and $n$ are the number of rows and columns in the matrix $land$, respectively.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|