#+ANKI_DECK: study_deck_02 * TODO 0200. Number of Islands :medium: :PROPERTIES: :NEETCODE: [[file:../../roadmap.org::*0200. Number of Islands][0200. Number of Islands]] :END: 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:* #+begin_src Input: grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"] ] Output: 1 #+end_src *Example 2:* #+begin_src Input: grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"] ] Output: 3 #+end_src *Constraints:* - ~m == grid.length~ - ~n == grid[i].length~ - ~1 <= m, n <= 300~ - ~grid[i][j]~ is ~'0'~ or ~'1'~. ** TODO Approach Write your approach here. ** TODO Python #+begin_src python :lc-problem 200 :lc-lang python3 class Solution: def numIslands(self, grid: List[List[str]]) -> int: #+end_src ** TODO C++ #+begin_src cpp :lc-problem 200 class Solution { public: int numIslands(vector>& grid) { } }; #+end_src