leetcode1020. 飞地的数量(dfs)

给出一个二维数组 A,每个单元格为 0(代表海)或 1(代表陆地)。

移动是指在陆地上从一个地方走到另一个地方(朝四个方向之一)或离开网格的边界。

返回网格中无法在任意次数的移动中离开网格边界的陆地单元格的数量。

示例 1:

输入:[[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]
输出:3
解释:
有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。

解题思路

从网格边界出发,像网格内部进行深度优先搜索,将可到达的地方全部置为水域,最后遍历矩阵,找出无法到达的陆地。

代码

class Solution {public int numEnclaves(int[][] A) {int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1}};for(int i=0;i<A.length;i++)//遍历边界{Enclaves(A, dir,i,0);Enclaves(A, dir,i,A[0].length-1);}for(int i=0;i<A[0].length;i++){Enclaves(A, dir,0,i);Enclaves(A, dir,A.length-1,i);}int ans=0;for(int i=1;i<A.length-1;i++)for(int j=1;j<A[0].length-1;j++)if(A[i][j]==1) ans++;return ans;}public void Enclaves(int[][] A,int[][] dir,int x,int y) {if(x<0||y>=A[0].length||y<0||x>=A.length)return ;if(A[x][y]==0) return ;A[x][y]=0;for(int[] d:dir){int nextX=d[0]+x,nextY=d[1]+y;Enclaves(A, dir, nextX, nextY);}}
}

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

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

相关文章

未来编程语言的走向_在编程方面我从失败走向成功的过程以及让我成功的原因

未来编程语言的走向In the past 10 years, I’ve had three separate experiences trying to learn programming. I’ve wondered why I’ve had such different results. What had caused me to both fail and succeed?在过去的10年中&#xff0c;我有3种不同的尝试学习编程的…

《中国人工智能学会通讯》——5.16 结 论

5.16 结 论 在过去的 30 年中&#xff0c;移动操作机器人在机器人实验室受到了广泛的关注并获得了比较充分的研究。未来随着工业领域的自动化需求&#xff0c;移动操作机器人将会深入到生产的各个环节。目前&#xff0c;几乎所有的移动操作机器人都没有在实际环境中获得广泛及充…

【转载 | 笔记】IIS无法删除应该程序池 因为它包含X个应用程序

IIS无法删除应该程序池 因为它包含X个应用程序 今天代码主分支在vs2015创建了虚拟目录http://localhost/webapp指向的物理路径是E:\webapp 之后新开了一个分支把代码放在了D:\webapp之后又在vs2015中创建了虚拟目录 http://localhost/webapp/home 这下就杯具了。在主分支调试的…

python作中国地图背景气泡图_exce表格中怎么制作中国地图背景数据气泡图

exce表格中怎么制作中国地图背景数据气泡图exce表格中怎么制作中国地图背景数据气泡图?excel表格中想要在中国地图上显示气泡来看看地区分布情况&#xff0c;该怎么设置中国地图气泡图表呢?下面我们就来看看详细的教程&#xff0c;需要的朋友可以参考下1、如图1所示&#xff…

leetcode979. 在二叉树中分配硬币(dfs)

给定一个有 N 个结点的二叉树的根结点 root&#xff0c;树中的每个结点上都对应有 node.val 枚硬币&#xff0c;并且总共有 N 枚硬币。 在一次移动中&#xff0c;我们可以选择两个相邻的结点&#xff0c;然后将一枚硬币从其中一个结点移动到另一个结点。(移动可以是从父结点到…

python怎么显示求余的除数_Python算术运算符及用法详解

算术运算符也即数学运算符&#xff0c;用来对数字进行数学运算&#xff0c;比如加减乘除。下表列出了 Python 支持所有基本算术运算符。表 1 Python 常用算术运算符运算符说明实例结果加12.45 1527.45-减4.56 - 0.264.3*乘5 * 3.618.0/除法(和数学中的规则一样)7 / 23.5//整除…

任务完成:我从CNC2018 GetAJob挑战中学到的东西

什么是CNC2018&#xff1f; (What is CNC2018?) CNC2018 stands for the CodeNewbie Challenge of 2018 put on by CodeNewbie. If you haven’t heard of CodeNewbie, it’s a community and podcast run by Saron Yitbarek. They also host live Twitter Chats on Sundays a…

HTML td 标签的 colspan 属性

表格单元横跨两列的表格&#xff1a; <table border"1"><tr><th>Month</th><th>Savings</th></tr><tr><td colspan"2">January</td></tr><tr><td colspan"2">Fe…

Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)

作者&#xff1a;Antonio Leiva 时间&#xff1a;Jan 5, 2017 原文链接&#xff1a;https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表达式允许更简单的方式建模式函数&#xff0c;所以它是Kotlin和任何其他现代开发语言的最强工具之一。 在Java6中&#xff0c;我们仅能下…

Pyhon进阶9---类的继承

类的继承 基本概念 定义 格式如下 继承中的访问控制 class Animal:__CNOUT 0HEIGHT 0def __init__(self,age,weight,height):self.__CNOUT self.__CNOUT 1self.age ageself.__weight weightself.HEIGHT heightdef eat(self):print({} eat.format(self.__class__.__name__…

python怎么备份列表_python实例:backup 备份

python实例&#xff1a;backup 备份本文来源于《python简明教程》中的实例1. 提出问题&#xff1a; 我想要一个可以为我的所有重要文件创建备份的程序。2. 分析明确问题&#xff1a;我们如何确定该备份哪些文件&#xff1f;备份保存在哪里&#xff1f;我们怎么样存储备份&#…

leetcode1466. 重新规划路线(dfs)

n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部决定重新规划路线&#xff0c;以改变交通拥堵的状况。 路…

mysql数学函数名_Mysql数学函数

所有的数学函数在发生错误的情况下&#xff0c;均返回 NULL。-一元减。改变参数的符号&#xff1a;mysql> SELECT - 2;-> -2注意&#xff0c;如果这个操作符被用于一个 BIGINT&#xff0c;返回值也是一个 BIGINT&#xff01;这就意味着&#xff0c;应该避免在一个可能有值…

angular 渐进_如何创建具有Angular和无头CMS的渐进式Web应用程序

angular 渐进by Ondrej Chrastina通过Ondrej Chrastina 如何创建具有Angular和无头CMS的渐进式Web应用程序 (How to create a progressive web app featuring Angular and headless CMS) Have you ever wondered how a headless Content Management System fits in with Progr…

win10不用第三方工具激活的方法

步骤&#xff1a;1、本机上装个win7旗舰版&#xff0c;这个得拿第三方工具激活一下&#xff0c;当然你如果已经购买了正版更没问题了。第三方工具推荐那个啥啥loader&#xff0c;记住&#xff1a;chew_wga系列的暴力工具是不行的哦&#xff1b;2、把需要安装的win10官方安装镜像…

CentOS 7 搭建 LAMP

一、安装httpd 1、yum install httpd -y 2、启动服务&#xff1a;systemctl start httpd 3、设置开机启动&#xff1a;systemctl enable 二、安装mariadb 1、yum groupinstall mariadb 2、启动服务&#xff1a;systemctl start mariadb 3、设置开机启动&#xff1a;systemctl e…

quartz教程二

转载于:https://www.cnblogs.com/mumian2/p/10729901.html

python hookapi_pytest文档70-Hook钩子函数完整API总结​

pytest_collectstart(collector: Collector) 收集器开始收集。pytest_make_collect_report(collector: Collector) 执行collector.collect()并返回一个CollectReport。pytest_itemcollected(item: Item) 我们刚刚收集了一个测试项目。pytest_collectreport(report: Coll…

出现字迹模糊迹象_改变迹象:如何使用动态编程解决竞争性编程问题

出现字迹模糊迹象by Sachin Malhotra由Sachin Malhotra 改变迹象&#xff1a;如何使用动态编程解决竞争性编程问题 (Change the signs: how to use dynamic programming to solve a competitive programming question) If you’re a competitive programmer like I am, one of…

leetcode695. 岛屿的最大面积(dfs)

给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表水&#xff09;包围着。找到给定的二维数组中最大…