leetcode 水域大小(DFS)

阅读: 评论:0

leetcode 水域大小(DFS)

leetcode 水域大小(DFS)

题目

思路及代码

1、全通过代码

与其他DFS题不同的地方:

1、递归开始调用的地方,每个0统计后就不能再次进行统计了,所以在主方法进行调用的地方要先判断flag是否为false,保证该位置没有被统计到水域中;

2、对输出进行排序(题目要求);

3、边界值问题

   主方法调用处: i< length  或i<= length-1;

    递归处:不能取到的临界值,比如length不能取到,所以等于也不行。

import java.util.ArrayList;
import java.util.Collections;
class Solution {public int[] pondSizes(int[][] land) {// 垂直 i+-1,j    水平 i,j+-1     //对角  左上 i-1,j-1  左下 i-1,j+1   右上 i+1,j-1  右下   i+1,j+1ArrayList<Integer> save = new ArrayList<>();int rows= land.length;int cols = land[0].length; boolean [][] flag = new boolean [rows][cols];for(int i= 0;i<rows;i++){for(int j = 0;j< cols;j++){if(land[i][j]== 0 && flag[i][j] == false){save.add(search(land,flag,rows,cols,i,j));}}}Collections.sort(save);int len = save.size();int [] size = new int [len];for(int i = 0;i<len;i++){size[i] = (i);}return size;}public int search (int [][] land,boolean [][] flag,int rows,int cols,int i,int j){if(i<0 || i>= rows || j<0 || j>= cols|| flag[i][j] == true || land [i][j] !=0){return 0;}flag[i][j] = true;return(1+ search(land,flag,rows,cols,i-1,j)+//上search(land,flag,rows,cols,i+1,j)+//下search(land,flag,rows,cols,i,j-1)+search(land,flag,rows,cols,i,j+1)+search(land,flag,rows,cols,i-1,j-1)+search(land,flag,rows,cols,i-1,j+1)+search(land,flag,rows,cols,i+1,j-1)+search(land,flag,rows,cols,i+1,j+1));}
}
import java.util.ArrayList;
class Solution {public int[] pondSizes(int[][] land) {// 垂直 i+-1,j    水平 i,j+-1     //对角  左上 i-1,j-1  左下 i-1,j+1   右上 i-1,j-1  右下   i+1,j+1ArrayList<Integer> save = new ArrayList<>();int rows= land.length-1;int cols = land[0].length-1; boolean [][] flag = new boolean [rows][cols];for(int i= 0;i< rows;i++){for(int j = 0;j< cols;j++){if(land[i][j]== 0){save.add(search(land,flag,rows,cols,i,j));}}}int len = save.size();int [] size = new int [len];for(int i = 0;i<len;i++){size[i] = (i);}return size;}public int search (int [][] land,boolean [][] flag,int rows,int cols,int i,int j){if(i<0 || i>= rows || j<0 ||j>= cols|| flag[i][j] == true || land [i][j] !=0){return 0;}flag[i][j] = true;return(1+ search(land,flag,rows,cols,i-1,j)+search(land,flag,rows,cols,i+1,j)+search(land,flag,rows,cols,i,j-1)+search(land,flag,rows,cols,i,j+1)+search(land,flag,rows,cols,i-1,j-1)+search(land,flag,rows,cols,i-1,j+1)+search(land,flag,rows,cols,i-1,j-1)+search(land,flag,rows,cols,i+1,j+1));}
}

 

本文发布于:2024-02-02 05:50:40,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170682423941777.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:水域   大小   leetcode   DFS
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23