NeetCode 150 / Graphs
MediumGraphsO(m×n)
ভিডিওতে দেখো — YouTube @algonur_com

কোড

Python
def numIslands(grid: list[list[str]]) -> int:
    if not grid: return 0
    islands = 0

    def dfs(r, c):
        if not (0 <= r < len(grid) and 0 <= c < len(grid[0])):
            return
        if grid[r][c] != '1': return
        grid[r][c] = '0'  # mark visited
        for dr, dc in [(1,0),(-1,0),(0,1),(0,-1)]:
            dfs(r + dr, c + dc)

    for r in range(len(grid)):
        for c in range(len(grid[0])):
            if grid[r][c] == '1':
                dfs(r, c)
                islands += 1
    return islands
Java
public int numIslands(char[][] grid) {
    int islands = 0;
    for (int r = 0; r < grid.length; r++)
        for (int c = 0; c < grid[0].length; c++)
            if (grid[r][c] == '1') {
                dfs(grid, r, c);
                islands++;
            }
    return islands;
}

void dfs(char[][] g, int r, int c) {
    if (r < 0 || r >= g.length || c < 0 || c >= g[0].length) return;
    if (g[r][c] != '1') return;
    g[r][c] = '0';
    dfs(g,r+1,c); dfs(g,r-1,c);
    dfs(g,r,c+1); dfs(g,r,c-1);
}
Kotlin
fun numIslands(grid: Array<CharArray>): Int {
    var islands = 0
    fun dfs(r: Int, c: Int) {
        if (r !in grid.indices || c !in grid[0].indices) return
        if (grid[r][c] != '1') return
        grid[r][c] = '0'
        dfs(r+1,c); dfs(r-1,c); dfs(r,c+1); dfs(r,c-1)
    }
    for (r in grid.indices)
        for (c in grid[0].indices)
            if (grid[r][c] == '1') { dfs(r, c); islands++ }
    return islands
}
C++
void dfs(vector<vector<char>>& g, int r, int c) {
    if (r<0||r>=g.size()||c<0||c>=g[0].size()) return;
    if (g[r][c]!='1') return;
    g[r][c]='0';
    dfs(g,r+1,c); dfs(g,r-1,c);
    dfs(g,r,c+1); dfs(g,r,c-1);
}

int numIslands(vector<vector<char>>& grid) {
    int islands = 0;
    for (int r=0; r<grid.size(); r++)
        for (int c=0; c<grid[0].size(); c++)
            if (grid[r][c]=='1') { dfs(grid,r,c); islands++; }
    return islands;
}

জটিলতা

O(m×n)
সময় — অ্যারেটা একবারই ঘুরি, ম্যাপে খোঁজা O(1)।
O(m×n)
জায়গা — সবচেয়ে খারাপ ক্ষেত্রে সব সংখ্যা ম্যাপে থাকে।
আগের সমস্যা← N-Queensপরের সমস্যাMax Area of Island →