leetcode面试题 16.19. 水域大小(深度优先搜索)

你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。

示例:

输入:
[
[0,2,1,0],
[0,1,0,1],
[1,1,0,1],
[0,1,0,1]
]
输出: [1,2,4]

代码

class Solution {public int[] pondSizes(int[][] land) {int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};//方向PriorityQueue<Integer> heap=new PriorityQueue<>();for(int i=0;i<land.length;i++)for(int j=0;j<land[0].length;j++)//处理0元素作为入口{if(land[i][j]>0) continue;int res=pond(land,dir,i,j);if(res>0) heap.add(res);} int num=heap.size();int[] res=new int[num];for(int i=0;i<num;i++)res[i]=heap.poll();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]=Integer.MAX_VALUE;//置为访问for(int[] d:dir)//遍历所有方向{int nextX=d[0]+x,nextY=d[1]+y;sum+=pond(land,dir,nextX,nextY);}return sum;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java -jar 默认参数_JAVA入门学习指南,建议收藏

如果你不懂Java 并且想认真学习接触了解一下Java的语法&#xff0c;建议把这篇文章收藏了&#xff0c;多看几遍&#xff0c;应该可以初步掌握Java 大部分基础的语法 。 让我们出发吧&#xff01;ps:本文有点长&#xff0c;耐心阅读 。〇&#xff0c;编程环境工程项目推荐使用ID…

【RabbitMQ】 WorkQueues

消息分发 在【RabbitMQ】 HelloWorld中我们写了发送/接收消息的程序。这次我们将创建一个Work Queue用来在多个消费者之间分配耗时任务。 Work Queues&#xff08;又称为&#xff1a;Task Queues&#xff09;的主要思想是&#xff1a;尽可能的减少执行资源密集型任务时的等待时…

python matplotlib库安装出错_使用pip install Matplotlib时出现内存错误

我使用的是Python2.7&#xff0c;如果我试图安装Matplotlib&#xff0c;如果我使用“pip install Matplotlib”&#xff0c;就会出现这个错误Exception:Traceback (most recent call last):File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line …

笑看职场什么程序员才抢手,什么样的程序员涨薪多?

​程序员&#xff0c;怎么才算合格&#xff0c;不好说吧&#xff1b;他就像销售一样&#xff0c;一名销售员&#xff0c;比如网络销售卖茶叶&#xff0c;他卖茶叶很厉害呀&#xff0c;可是你让他去销售房地产&#xff0c;就算他有点销售的基础&#xff0c;也要重新去学怎么销售…

Android画布Canvas裁剪clipRect,Kotlin

Android画布Canvas裁剪clipRect&#xff0c;Kotlin private fun mydraw() {val originBmp BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp Bitmap.createBitmap(originBmp.width, originBmp.height, Bitmap.Config.A…

调查|73%的公司正使用存在漏洞的超期服役设备

本文讲的是调查&#xff5c;73%的公司正使用存在漏洞的超期服役设备&#xff0c;一份新近的调查覆盖了北美350家机构的212000台思科设备。结果显示&#xff0c;73%的企业正在使用存在漏洞、超期服役的网络设备。该数字在上一年仅为60%。 Softchoice公司思科部门业务主管大卫魏格…

为什么要做稀疏编码_为什么我每天都要编码一年,所以我也学到了什么,以及如何做。...

为什么要做稀疏编码by Paul Rail由Paul Rail 为什么我每天都要编码一年&#xff0c;所以我也学到了什么&#xff0c;以及如何做。 (Why I coded every day for a year, what I learned, and how you can do it, too.) I was looking to switch careers. The world today is no…

深度装机大师一键重装_笔记本怎么重装系统?笔记本自己如何重装系统?

如何给笔记本重装系统呢?笔记本系统使用时间长了难免会运行缓慢&#xff0c;我们第一反应就是重装系统笔记本了。但是很多小白用户们就惆怅了&#xff0c;不知道笔记本怎么重装系统&#xff0c;怎么进行重装系统笔记本呢?首先&#xff0c;笔记本电脑可以重置系统&#xff0c;…

leetcode剑指 Offer 11. 旋转数组的最小数字(二分查找)

把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;我们称之为数组的旋转。输入一个递增排序的数组的一个旋转&#xff0c;输出旋转数组的最小元素。例如&#xff0c;数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转&#xff0c;该数组的最小值为1。 示例 1&#xff1a; 输…

XMLHttpRequest状态码及相关事件

1.创建一个XMLHttpRequest对象 2.对XMLHttpRequest对象进行事件的监听(定义监听事件的位置不影响 3.对XMLHttpRequest对象的状态码 状态 名称描述0Uninitialized初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置1Open open() 方法已调用&#xff0c;但是 send()…

-code vs 1474 十进制转m进制

1474 十进制转m进制 时间限制: 1 s空间限制: 128000 KB题目等级 : 白银 Silver题解查看运行结果题目描述 Description将十进制数n转换成m进制数 m<16 n<100 输入描述 Input Description共一行 n和m 输出描述 Output Description共一个数 表示n的m进制 样例输入 Sample In…

人工智能时代号角已吹响 COMPUTEX如何凝聚AI这股力量?

当前谈到人工智能&#xff08;AI&#xff09;&#xff0c;或许大家最直接的反应是Google的AlphaGo&#xff0c;但比起“遥不可及”的围棋机器人&#xff0c;其实AI早就融入人们生活&#xff0c;就像苹果手机中的语音助手Siri&#xff0c;如此“平易近人”。从自动驾驶、机器人、…

python写入文字到txt只写入最后一行_python文件写入:向txt写入内容的设置

创建文本流的最简单方法是使用 open(),可以选择指定编码: f=open("myfile.txt","r",encoding="utf-8") 但是更为安全的方法是: with open("myfile.txt","w",encoding="utf-8") as f: f.write(str) 还可以设置…

python自带ide和pycharm哪个好_排名前三的Python IDE你选择哪个?我选PyCharm

世界上最好的 Python 编辑器或 IDE 是什么&#xff1f;炫酷的界面、流畅的体验&#xff0c;我们投 PyCharm一票&#xff0c;那么你呢&#xff1f;编辑Python程序&#xff0c;您有许多选项。有些人仍然喜欢一个基本的文本编辑器&#xff0c;如Emacs&#xff0c;VIM或Gedit&#…

leetcode1254. 统计封闭岛屿的数目(dfs)

有一个二维矩阵 grid &#xff0c;每个位置要么是陆地&#xff08;记号为 0 &#xff09;要么是水域&#xff08;记号为 1 &#xff09;。 我们从一块陆地出发&#xff0c;每次可以往上下左右 4 个方向相邻区域走&#xff0c;能走到的所有陆地区域&#xff0c;我们将其称为一座…

Dash的快速入门将使您在5分钟内进入“ Hello World”

by Anuj Pahade由Anuj Pahade Dash的快速入门将使您在5分钟内进入“ Hello World” (This quick intro to Dash will get you to “Hello World” in under 5 minutes) Dash is an open source library for creating reactive apps in Python. You can create amazing dashboa…

JSON/xml

JSON是什么&#xff1a; JSON(JavaScriptObject Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据…

unity开宝箱动画_[技术博客]Unity3d 动画控制

在制作游戏时&#xff0c;导入的箱子模型本身自带动画。然而&#xff0c;它的动画是一个从打开到关闭的完整过程&#xff0c;并且没有给出控制打开关闭的方法。最直接的想法是对该动画进行拆分&#xff0c;再封装成不同的动画状态&#xff0c;但是不巧的是&#xff0c;这个动画…

php上传大文件时,服务器端php.ini文件中需要额外修改的选项

几个修改点&#xff1a; 1、upload_max_filesize 上传的最大文件 2、post_max_size 上传的最大文件 3、max_execution_time 修改为0表示无超时&#xff0c;一直等待 4、max_input_time 参考网址&#xff1a; 在php.ini中把max_input_time 和 max_execution_time设置得特别长…

《中国人工智能学会通讯》——11.21 结束语

11.21 结束语 本文针对交通流的网络性、异质性和动态性特点&#xff0c;结合当前多任务学习方法的不足提出了相应的解决方案。然而&#xff0c;在实际的应用场景中还存在更多的挑战&#xff0c;需要进一步深入的研究方向包括&#xff1a;① 高维任务的共同学习方法。在高维数据…