leetcode695. 岛屿的最大面积(dfs)
生活随笔
收集整理的這篇文章主要介紹了
leetcode695. 岛屿的最大面积(dfs)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個包含了一些 0 和 1 的非空二維數組 grid 。一個 島嶼 是由一些相鄰的 1 (代表土地) 構成的組合,這里的「相鄰」要求兩個 1 必須在水平或者豎直方向上相鄰。你可以假設 grid 的四個邊緣都被 0(代表水)包圍著。找到給定的二維數組中最大的島嶼面積。(如果沒有島嶼,則返回面積為 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
對于上面這個給定矩陣應返回 6。注意答案不應該是 11 ,因為島嶼只能包含水平或垂直的四個方向的 1 。
class Solution {public int maxAreaOfIsland(int[][] grid) {int res=0;int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1}};for(int i=0;i<grid.length;i++)for(int j=0;j<grid[0].length;j++)if(grid[i][j]==1)res= Math.max(pond(grid,dir,i,j),res);return res;}public int pond(int[][] land,int[][] dir,int x,int y) {if(x<0||y>=land[0].length||y<0||x>=land.length||land[x][y]==0)return 0;int sum=1;land[x][y]=0;for(int[] d:dir){int nextX=d[0]+x,nextY=d[1]+y;sum+=pond(land,dir,nextX,nextY);}return sum;}
}
總結
以上是生活随笔為你收集整理的leetcode695. 岛屿的最大面积(dfs)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到牙齿松动拔牙是什么预兆
- 下一篇: leetcode64. 最小路径和(dp