【LeetCode】3月29日打卡-Day14-BFS

题1 地图分析

描述

你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。
我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |x0 - x1| + |y0 - y1| 。
如果我们的地图上只有陆地或者海洋,请返回 -1。
示例 1:
输入:[[1,0,1],[0,0,0],[1,0,1]]
输出:2
解释:
海洋区域 (1, 1) 和所有陆地区域之间的距离都达到最大,最大距离为 2。
示例 2:
输入:[[1,0,0],[0,0,0],[0,0,0]]
输出:4
解释:
海洋区域 (2, 2) 和所有陆地区域之间的距离都达到最大,最大距离为 4。
提示:
1 <= grid.length == grid[0].length <= 100
grid[i][j] 不是 0 就是 1。

题解

这道题没做出来,也没有思路,下面是甜姨的方法
思路:先把所有的陆地都入队,然后从各个陆地同时开始一层一层的向海洋扩散,那么最后扩散到的海洋就是最远的海洋!
并且这个海洋肯定是被离他最近的陆地给扩散到的!
下面是扩散的图示,1表示陆地,0表示海洋。每次扩散的时候会标记相邻的4个位置的海洋:
在这里插入图片描述

class Solution {public int maxDistance(int[][] grid) {int[] dx = {0, 0, 1, -1};int[] dy = {1, -1, 0, 0};Queue<int[]> queue = new ArrayDeque<>();int m = grid.length, n = grid[0].length;// 先把所有的陆地都入队。for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == 1) {queue.offer(new int[] {i, j});}}}// 从各个陆地开始,一圈一圈的遍历海洋,最后遍历到的海洋就是离陆地最远的海洋。boolean hasOcean = false;int[] point = null;while (!queue.isEmpty()) {point = queue.poll();int x = point[0], y = point[1];// 取出队列的元素,将其四周的海洋入队。for (int i = 0; i < 4; i++) {int newX = x + dx[i];int newY = y + dy[i];if (newX < 0 || newX >= m || newY < 0 || newY >= n || grid[newX][newY] != 0) {continue;}grid[newX][newY] = grid[x][y] + 1; // 这里我直接修改了原数组,因此就不需要额外的数组来标志是否访问hasOcean = true;queue.offer(new int[] {newX, newY});}}// 没有陆地或者没有海洋,返回-1。if (point == null || !hasOcean) {return -1;}// 返回最后一次遍历到的海洋的距离。return grid[point[0]][point[1]] - 1;}
}

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

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

相关文章

技术论坛 | CCF YOCSEF上海即将在 CNCC 举办“知识图谱遇见社交媒体”专题论坛

中国计算机学会青年计算机科技论坛 CCF YoungComputer Scientists & Engineers Forum CCF YOCSEF上海 CNCC2017大会技术论坛 主题: 知识图谱遇见社交媒体 时间&#xff1a;2017年10月26日&#xff08;星期四&#xff09;13:30~17:30 地点&#xff1a;福州海峡国际会展中心会…

你确定自己不是那只猫吗

成为猫与养猫小的时候&#xff0c;小夕曾被告知兔子可爱是因为喜欢吃萝卜&#xff0c;导致小夕吃了好多萝北。上学后&#xff0c;会哄着小夕学习的就是好老师&#xff0c;强行让小夕背书的肯定是坏老师。找工作时&#xff0c;HR会给小夕画大饼&#xff0c;让小夕觉得自己即将去…

一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm

***一文搞懂HMM&#xff08;隐马尔可夫模型&#xff09;***简单来说&#xff0c;熵是表示物质系统状态的一种度量&#xff0c;用它老表征系统的无序程度。熵越大&#xff0c;系统越无序&#xff0c;意味着系统结构和运动的不确定和无规则&#xff1b;反之&#xff0c;&#xff…

文本分类有哪些论文中很少提及却对性能有重要影响的tricks?

前言一年前小夕在知乎上提问过这么一个问题文本分类有哪些论文中很少提及却对性能有重要影响的tricks&#xff1f;链接&#xff1a;https://www.zhihu.com/question/265357659/answer/578944550当时正好在刷一个比较有趣的task&#xff0c;结果发现奇奇怪怪的tricks可以带来不少…

课程 |《知识图谱》第一期

课程详情 课程名称: 《知识图谱》第一期 报名方式&#xff1a; 点击文末“阅读原文”&#xff0c;即可享受参团优惠报名哦&#xff01; 主讲老师&#xff1a; 王昊奋 著名知识图谱专家 博士毕业于上海交通大学&#xff0c;CCF术语专委会执委&#xff0c;中文信息学会语言与…

【LeetCode】3月30日打卡-Day15

题1 描述 0,1,n-1这n个数字排成一个圆圈&#xff0c;从数字0开始&#xff0c;每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如&#xff0c;0、1、2、3、4这5个数字组成一个圆圈&#xff0c;从数字0开始每次删除第3个数字&#xff0c;则删除的前4个数…

新闻 | 聚焦技术领域现状与发展阿里巴巴知识图谱专场亮相云栖大会 阿里知识图谱亮相云栖大会产学深度交流推进业务创新

14日&#xff0c;阿里巴巴知识图谱正式亮相云栖大会&#xff0c;本次活动邀请到诸多阿里技术专家与学界领军人物参会&#xff0c;一同探讨知识图谱领域的现状与远景&#xff0c;推动产业界与学术界深度交流。 知识图谱将信息表达成更接近人类认知世界的形式&#xff0c;提供了帮…

100篇论文串讲对话系统前世今生

不可以不可以&#xff0c;都在忙着过年呢&#xff0c;小夕怎么能推这种文章呢╮(╯▽╰)╭话说&#xff0c;大年初一你萌怎么能戳进来这种文章&#xff01;快&#xff0c;赶紧承认你是卖萌屋的真爱粉(&#xffe3;∇&#xffe3;)&#xff5e;小屋今天不卖干货&#xff0c;只送…

【LeetCode】3月31日打卡-Day16-数组排序算法汇总

排序算法一览 快排 插入排序 希尔排序 桶排序 计数排序 归并排序 桶排序 class Solution {public int[] sortArray(int[] nums) {if(nums.length <1)return nums;qSort(nums,0,nums.length-1);selectSort(nums);insertSort(nums);shellSort(nums);bucketSort(nums);countS…

如何打造高质量的NLP数据集

今天发烧睡了一天T^T&#xff0c;睡醒后突然想起这个都快凉透的订阅号&#xff0c;刷了刷知乎&#xff0c;刷到了这个问题知乎&#xff1a;如何打造高质量的机器学习数据集&#xff1f; https://www.zhihu.com/question/333074061/answer/773825458于是就有了暖暖卖萌屋的冲动(…

郑杰 | 如何拿回我们自己的医疗数据?

本文转载自公众号造就&#xff0c;作者郑杰&#xff0c;树兰医疗总裁&#xff0c;OMAHA 开放医疗与健康联盟发起人。 造就 大家好&#xff0c;我是郑杰&#xff0c;来自于杭州。我出生于一个医生世家&#xff0c;也在医院边上长大&#xff0c;但大学里我读的是计算机专业&#…

【Java】Object类、Objects类和日期类

1 Object类 Object类是所有类的父类&#xff0c;每个类都直接或间接的继承自该类 1.1 Object.toString() 作用&#xff1a;打印输出类信息 重写前&#xff1a;打印输出包名类名地址值 重写后&#xff1a;打印输出属性值 1.2 Object.equals() 作用&#xff1a;比较两个对象…

问题对语义相似度计算-参赛总结

时间段&#xff1a;2018.06.10~2018.07.20问题对语义相似度计算&#xff08;从0到0.5&#xff09; 短短一个多月的时间&#xff0c;我学到了很多很多东西&#xff0c;从一个呆头小白初长成人。首先&#xff0c;必须感谢我的导师能给我这个机会从头到尾完整地参加这次比赛&#…

后BERT时代:15个预训练模型对比分析与关键点探究

前言在小夕之前写过的《NLP的游戏规则从此改写&#xff1f;从word2vec, ELMo到BERT》一文中&#xff0c;介绍了从word2vec到ELMo再到BERT的发展路径。而在BERT出现之后的这大半年的时间里&#xff0c;模型预训练的方法又被Google、Facebook、微软、百度、OpenAI等极少数几个玩得…

技术论坛 | 10月22日在微软:“行业知识图谱+ ”论坛通知

大数据创新学习中心 《国务院新一代人工智能发展规划》的“跨媒体分析推理技术”强调“重点突破跨媒体统一表征、关联理解与知识挖掘、知识图谱构建与学习、知识演化与推理、智能描述与生成等技术”&#xff0c;为进一步了解知识图谱技术的应用场景&#xff0c;2017年10月22日在…

【Java】StringBuilder类、包装类

1 StringBuilder类 1.1 String的劣势 String类中字符串是常量&#xff0c;创建后不能更改 //底层是final修饰的数组 private final byte[] value;字符串相加&#xff0c;内存中会存在多个字符串&#xff0c;占用空间多&#xff0c;效率低下 1.2 StringBuilder的优势 Strin…

从贪心选择到探索决策:基于强化学习的多样性排序

本文主要介绍发表在SIGIR2018上的论文From Greedy Selection to Exploratory Decision-Making: Diverse Ranking with Policy-Value Networks​www.bigdatalab.ac.cn这篇论文利用强化学习来解决多样性排序问题&#xff0c;整体思路和AlphaGo类似。Motivation在信息检索领域一个…

对话系统聊天机器人的设计艺术(上)

前言关于本文的阅读方式&#xff1a;这不是一篇学术综述&#xff0c;也不是单纯的科普文&#xff0c;而是试图从目标出发来渐进式的思考对话系统的设计&#xff0c;顺便科普。因此本文不适合跳读&#xff0c;也不适合5分钟式浏览&#xff0c;而是适合在夜深人静的时候一个人...…