码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode——16.19.水域大小

时间:2020-06-21 12:04:47      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:加油   val   ++   ima   div   array   arraylist   ||   冒泡排序   

public int[] pondSizes(int[][] land) {
        List<Integer> list = new ArrayList<>();
        int temp;
        for (int i = 0; i < land.length; i++) {
            for (int j = 0; j < land[0].length; j++) {
                temp = findpond(land, i, j);
                if (temp != 0) {
                    list.add(temp);
                }
            }
        }
        int[] result = list.stream().mapToInt(Integer::valueOf).toArray();
        Arrays.sort(result);
        return result;
    }

    private int findpond(int[][] land, int i, int j) {
        int sum = 0;
        if (i < 0 || i >= land.length || j < 0 || j >= land[0].length || land[i][j] != 0) {
            return sum;
        }
        land[i][j] = -1;
        sum++;
        sum += findpond(land, i + 1, j);
        sum += findpond(land, i, j + 1);
        sum += findpond(land, i - 1, j);
        sum += findpond(land, i, j - 1);
        sum += findpond(land, i + 1, j + 1);
        sum += findpond(land, i - 1, j - 1);
        sum += findpond(land, i + 1, j - 1);
        sum += findpond(land, i - 1, j + 1);
        return sum;
    }

技术图片

 

 依然是别人的题解,自己看懂写了一遍。

对于DFS和递归还是不熟练,很多地方就想不到,命名也是不难的东西。

这里面将Arraylist转化为list的这个语句

int[] result = list.stream().mapToInt(Integer::valueOf).toArray();

多妙啊,对stream()与lambda的用法尚且不会,有待学习。

对list进行排序,我还傻傻地写了冒泡排序,实际上一句话就可以搞定啊:

Arrays.sort(result);

多神奇啊,这还是刷题刷得不够多的原因,要继续加油啊。

 

像这道题,思路多清楚。遍历矩阵,遇到非零元素,就返回结果为0.遇到代表池塘的0,就将该元素标记为-1,可以避免重复搜索,并且在8个方向上进行统计池塘面积。

多妙啊!!!!

——2020.6.21

 

leetcode——16.19.水域大小

标签:加油   val   ++   ima   div   array   arraylist   ||   冒泡排序   

原文地址:https://www.cnblogs.com/taoyuxin/p/13171655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!