Graph DFS Samrat
unknown
java
a year ago
2.0 kB
38
Indexable
// leetcode 695 ==================
class Solution {
public int findArea(int[][] grid, int i, int j, int n, int m){
if(i<0 || j<0 || i>=n || j>=m || grid[i][j] == 0){
return 0;
}
grid[i][j] = 0;
int lArea = findArea(grid,i,j-1,n,m);
int uArea = findArea(grid,i-1,j,n,m);
int rArea = findArea(grid,i,j+1,n,m);
int dArea = findArea(grid,i+1,j,n,m);
int myArea = lArea + rArea + uArea + dArea + 1;
return myArea;
}
public int maxAreaOfIsland(int[][] grid) {
int maxArea = 0;
int n = grid.length;
int m = grid[0].length;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(grid[i][j] == 1){
int currArea = findArea(grid,i,j,n,m);
maxArea = Math.max(maxArea, currArea);
}
}
}
return maxArea;
}
}
// leetcode 130 ======================
class Solution {
public void changeToHash(int i, int j, int n, int m, char[][] board){
if(i<0 || j<0 || i>=n || j>=m || board[i][j] != 'O'){
return;
}
board[i][j] = '#';
changeToHash(i,j-1,n,m,board);
changeToHash(i-1,j,n,m,board);
changeToHash(i,j+1,n,m,board);
changeToHash(i+1,j,n,m,board);
}
public void solve(char[][] board) {
int n = board.length;
int m = board[0].length;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(i==0 || i==n-1 || j==0 || j==m-1){
if(board[i][j] == 'O'){
changeToHash(i,j,n,m,board);
}
}
}
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(board[i][j] == '#'){
board[i][j] = 'O';
} else if(board[i][j] == 'O'){
board[i][j] = 'X';
}
}
}
}
}Editor is loading...
Leave a Comment