你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。
示例:
输入:
[
[0,2,1,0],
[0,1,0,1],
[1,1,0,1],
[0,1,0,1]
]
输出: [1,2,4]
这种题其实都是一类问题,不论是岛屿面积或者岛屿数量再或者是水域大小,其实都是DFS的一个过程.只是相对的遍历条件会有一些不同罢了.直接使用DFS来做,这里process()只用来求当前位置的面积大小.
public int[] pondSizes(int[][] land) {
boolean[][] visited = new boolean[land.length][land[0].length];
List<Integer> list = new ArrayList<>();
for