Number of Islands
Difficulty: Medium
Category: DSA
Topics: Array, Depth-First Search, Breadth-First Search, Union Find, Matrix
Asked at: Amazon, Bloomberg, Microsoft, Oracle, Facebook, Apple, Uber, Google, Yandex, DoorDash, Qualtrics, Snapchat, Citadel, Expedia, LinkedIn, eBay, Goldman Sachs, VMware, Splunk, Tesla
Given an `m x n` 2D binary grid `grid` which represents a map of `'1'`s (land) and `'0'`s (water), return _the number of islands_.
An **island** is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
**Example 1:**
**Input:** grid = [
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
**Output:** 1
```
**Example 2:**
**Input:** grid = [
["1","1","0","0","0"],
["1","1","0","0","0"],
["0","0","1","0","0"],
["0","0","0","1","1"]
]
**Output:** 3
```
**Constraints:**
- `m == grid.length`
- `n == grid[i].length`
- `1 <= m, n <= 300`
- `grid[i][j]` is `'0'` or `'1'`.