ভিডিওতে দেখো — 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 islandsJava
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 →