728x90
반응형
https://leetcode.com/problems/max-area-of-island/submissions/
1. 섬의 개수를 구한다.
2. 구한 섬의 개수를 이용해, BFS를 시작할때 1로 시작해 돌면서 한칸씩 추가한다.
class Point{
public int x, y;
Point(int x, int y){
this.x=x;
this.y=y;
}
}
class Solution {
static int answer,n,m;
static int[][] dis = {{1,0},{0,1},{-1,0},{0,-1}};
static int[][] arr;
static boolean[][] check;
public int maxAreaOfIsland(int[][] grid) {
n=grid.length;
m=grid[0].length;
check= new boolean[n][m];
arr=grid;
answer=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(arr[i][j]==1 && check[i][j]==false){
BFS(new Point(i,j));
}
}
}
return answer;
}
public boolean isValid(int x, int y){
if(x<0 || y<0 || x>=n || y>=m){
return false;
}
return true;
}
public void BFS(Point p){
check[p.x][p.y]=true;
Queue<Point> q = new LinkedList<>();
q.offer(p);
int cnt=1;
answer=Math.max(answer, cnt);
while(!q.isEmpty()){
Point point=q.poll();
for(int i=0;i<4;i++){
Point np=new Point(point.x+dis[i][0], point.y+dis[i][1]);
if(isValid(np.x, np.y) && check[np.x][np.y] == false && arr[np.x][np.y]==1)
{
check[np.x][np.y]=true;
cnt++;
answer=Math.max(answer, cnt);
q.offer(np);
}
}
}
}
}
728x90
반응형
'Java > Java 알고리즘 LeetCode' 카테고리의 다른 글
[LeetCode- Ch7. DFS & BFS] 5. 단어 검색 # (0) | 2022.11.01 |
---|---|
[LeetCode- Ch7. DFS & BFS] 4. 단어 사다리 # (0) | 2022.10.31 |
[LeetCode- Ch7. DFS & BFS] 1. 섬의 수 (0) | 2022.10.31 |
[LeetCode- Ch6. 큐와 스택] 2. 유효한 괄호 (0) | 2022.10.31 |
[LeetCode- Ch6. 큐와 스택] 1. 야구게임 ## (+ Switch, Integer.parseInt, Integer.valueOf) (0) | 2022.10.31 |