朋友圈
classSolution{privatestaticfinalint[][] move =newint[][]{{1,0},{0,1},{-1,0},{0,-1}};privateint max =0;publicintmaxAreaOfIsland(int[][] grid){int m = grid.length;int n = grid[0].length;for(int i =0; i < m; i++){for(int j =0; j < n; j++){
max = Math.max(max,dfs(grid,newboolean[m][n], i, j));}}return max;}publicintdfs(int[][] grid,boolean[][] visited,int x,int y){if(visited[x][y]){return0;}if(grid[x][y]==0){return0;}int m = grid.length;int n = grid[0].length;int result =1;
visited[x][y]=true;for(int i =0; i <4; i++){int nx = x + move[i][0];int ny = y + move[i][1];if(nx >=0&& ny >=0&& nx < m && ny < n){
result +=dfs(grid, visited, nx, ny);}}return result;}}
沉岛
classSolution{privatestaticfinalint[][] move =newint[][]{{1,0},{0,1},{-1,0},{0,-1}};publicintmaxAreaOfIsland(int[][] grid){int m = grid.length;int n = grid[0].length;int max =0;for(int i =0; i < m; i++){for(int j =0; j < n; j++){
max = Math.max(max,dfs(grid, i, j));}}return max;}publicintdfs(int[][] grid,int x,int y){if(grid[x][y]==0){return0;}
grid[x][y]=0;int m = grid.length;int n = grid[0].length;int result =1;for(int i =0; i <4; i++){int nx = x + move[i][0];int ny = y + move[i][1];if(nx >=0&& ny >=0&& nx < m && ny < n){
result +=dfs(grid, nx, ny);}}return result;}}
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {int result = Integer.MIN_VALUE;
public intmaxPathSum(TreeNode root){maxPathSum1(root);return result;}
public intmaxPathSum1(TreeNode root){if(root == null){return0;}int max = root.val;int leftMax = Math.max(maxPathSum1(root.left),0);int rightMax = Math.max(maxPathSum1(root.right),0);
result = Math.max(result, max + leftMax + rightMax);return max + Math.max(leftMax, rightMax);}}
class Solution {int result =0;int[][] move = new int[][]{{1,0},{0,1},{-1,0},{0,-1}};
public intislandPerimeter(int[][] grid){if(grid.length ==0){return result;}for(int i =0; i < grid.length; i++){for(int j =0; j < grid[0].length; j++){if(grid[i][j]==1){helper(grid, i, j);return result;}}}return result;}
public voidhelper(int[][] grid,int x,int y){if(x <0|| y <0|| x == grid.length || y == grid[0].length || grid[x][y]==0){
result++;return;}if(grid[x][y]==2){return;}
grid[x][y]=2;for(int i =0; i < move.length; i++){int nx = x + move[i][0];int ny = y + move[i][1];helper(grid, nx, ny);}}}
岛屿的最大面积class Solution { private static final int[][] move = new int[][] {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}; private int max = 0; public int maxAreaOfIsland(int[][] grid) { int m = grid.length; int n = grid[0].length; fo