LeetCode 1020. 飞地的数量(图的BFS/DFS)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 BFS
      • 2.2 DFS

1. 题目

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

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

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

示例 1:
输入:[[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]
输出:3
解释: 
有三个 10 包围。一个 1 没有被包围,因为它在边界上。示例 2:
输入:[[0,1,1,0],[0,0,1,0],[0,0,1,0],[0,0,0,0]]
输出:0
解释:
所有 1 都在边界上或可以到达边界。提示:
1 <= A.length <= 500
1 <= A[i].length <= 500
0 <= A[i][j] <= 1
所有行的大小都相同

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-enclaves
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 BFS

  • 利用队列bfs,bool 变量记录是否接触边界
  • 接触,bfs返回0,不接触,返回陆地数量
class Solution {vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};int m, n, x, y, k;int count;bool out;queue<pair<int,int>> q;pair<int,int> tp;
public:int numEnclaves(vector<vector<int>>& A) {m = A.size(), n = A[0].size();int land = 0, i, j;for(i = 0; i < m; i++){for(j = 0; j < n; j++){if(A[i][j] == 1)//陆地{land += bfs(A,i,j);}}}return land;}int bfs(vector<vector<int>>& A, int i, int j) {count = 0;A[i][j] = 0;//访问过了count++;//陆地计数+1q.push({i,j});bool out = (i==0||i==m-1||j==0||j==n-1);while(!q.empty()){tp = q.front();q.pop();for(k = 0; k < 4; ++k){x = tp.first + dir[k][0];y = tp.second + dir[k][1];if(x>=0 && x<m && y>=0 && y<n && A[x][y]==1){A[x][y] = 0;count++;q.push({x,y});if(!out && (x==0||x==m-1||y==0||y==n-1))out = true;}}}if(out)return 0;return count;}
};

在这里插入图片描述

2.2 DFS

class Solution {vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};int m, n;
public:int numEnclaves(vector<vector<int>>& A) {m = A.size(), n = A[0].size();int land = 0, i, j;bool out;for(i = 0; i < m; i++){for(j = 0; j < n; j++){if(A[i][j] == 1)//陆地{out = (i==0||i==m-1||j==0||j==n-1);land += dfs(A,i,j,out);}}}return land;}int dfs(vector<vector<int>>& A, int i, int j, bool& out) {int x, y, k, count = 0;A[i][j] = 0;//访问过了count++;//陆地计数+1for(k = 0; k < 4; ++k){x = i + dir[k][0];y = j + dir[k][1];if(x>=0 && x<m && y>=0 && y<n && A[x][y]==1){A[x][y] = 0;if(!out && (x==0||x==m-1||y==0||y==n-1))out = true;count += dfs(A,x,y,out);}}if(out)return 0;return count;}
};

在这里插入图片描述

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

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

相关文章

论文浅尝 | ISEEQ: 利用动态元信息检索和知识图谱的资讯搜索式问题生成器

笔记整理&#xff1a;侯哲衡&#xff0c;东南大学硕士&#xff0c;研究方向为知识图谱问答、自然语言生成。动机对话资讯搜索是在智能问答中一个新兴研究领域。对话资讯搜索旨在根据通过用户查询自动询问资讯搜索式问题&#xff08;information-seeking questions&#xff0c;I…

浅谈点击信号对搜索的影响

文 | bytecoder源 | 知乎背景过去一周&#xff0c;我们探讨了搜索系统最核心的指标以及如何通过实验的方式来判断策略的好坏。但是影响一个实验的好坏除去策略本身的影响之外&#xff0c;还会受到一些反直觉的因素的影响&#xff1b;之前在做搜索&#xff0c;尤其是搜索系统成熟…

Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)

通过《Spring Cloud Alibaba基础教程&#xff1a;使用Nacos实现服务注册与发现》一文的学习&#xff0c;我们已经学会如何使用Nacos来实现服务的注册与发现&#xff0c;同时也介绍如何通过LoadBalancerClient接口来获取某个服务的具体实例&#xff0c;并根据实例信息来发起服务…

CCKS 2022 | 如何通过“说一句话”精准获取数据?恒生发布金融NL2SQL评测任务

某投资者登录券商理财APP&#xff0c;想要查找最近两年上市的公司&#xff0c;并按照最新的市值进行排序。然而他很难直接找到结果&#xff0c;需要经过层层筛选才能大致找到相关结果。有没有更简便的方式来查找数据&#xff1f;如果说一句话或者打一小段文字后&#xff0c;就能…

AI从业几年还不具备提出新模型的技术能力?看这个就够了!

AI是一门入门简单&#xff0c;但想深入却很难的学科&#xff0c;这也是为什么AI高端人才一直非常紧缺的重要原因。在AI领域技术领域&#xff0c;我们可以说机器学习功底决定了一个人的上限也不为过。为什么&#xff1f;机器学习就像物理学中的数学&#xff0c;如果你对数学没有…

Spring Cloud Alibaba基础教程:Nacos 生产级版本 0.8.0

昨晚Nacos社区发布了第一个生产级版本&#xff1a;0.8.0。由于该版本除了Bug修复之外&#xff0c;还提供了几个生产管理非常重要的特性&#xff0c;所以觉得还是有必要写一篇讲讲这次升级&#xff0c;在后续的文章中也都将以0.8.0版本为基础。 升级的理由 如Nacos官方的发布文…

LeetCode 1016. 子串能表示从 1 到 N 数字的二进制串(bitset)

1. 题目 给定一个二进制字符串 S&#xff08;一个仅由若干 ‘0’ 和 ‘1’ 构成的字符串&#xff09;和一个正整数 N&#xff0c;如果对于从 1 到 N 的每个整数 X&#xff0c;其二进制表示都是 S 的子串&#xff0c;就返回 true&#xff0c;否则返回 false。 示例 1&#xff…

论文浅尝 | KM-BART:用于视觉常识生成的知识增强多模态BART

笔记整理&#xff1a;陈子强&#xff0c;天津大学硕士动机视觉语言模型早期集中在纯理解任务&#xff08;例如&#xff0c;VQA视觉问答&#xff09;&#xff0c;尽管在理解任务上取得了先进的性能&#xff0c;却很少关注多模态生成任务。当前的预训练任务例如&#xff0c;掩码语…

AllenAI | 用GPT-3帮助增建数据,NLI任务直接提升十个点!?

文 | iven编 | 小轶用机器构建数据集&#xff0c;这件事可能比机器学习诞生的还要早&#xff0c;很多人做过很多工作。怎样让机器参与进来&#xff1f;前人的工作可以分成两类思路&#xff1a;一类是以远程监督为代表&#xff0c;让机器来标注&#xff0c;主要目的在于得到更多…

论文浅尝 | CLIP-Event: 用事件结构连接文本和图像

笔记整理&#xff1a;康婧淇&#xff0c;东南大学硕士&#xff0c;研究方向为多模态事件抽取、自然语言处理。动机视觉语言预训练模型通过理解图像和文本之间的排列组合&#xff0c;在支持多媒体应用方面取得了巨大成功。虽然现有的视觉语言预训练模型主要侧重于理解图像中的物…

LeetCode 402. 移掉K位数字(贪心,单调栈)

1. 题目 给定一个以字符串表示的非负整数 num&#xff0c;移除这个数中的 k 位数字&#xff0c;使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 输入: num "1432219", k 3 输出: "1219" 解释: 移除掉…

Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

自Spring Cloud Alibaba发布第一个Release以来&#xff0c;就备受国内开发者的高度关注。虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中&#xff0c;但是凭借阿里中间件团队的背景&#xff0c;还是得到不少团队的支持&#xff1b;同时&#xff0c;由于Spring …

忙累了躺平,躺醒后该干点啥

文 | 一只菜鸡前几天刷到 微调 的一些碎碎念&#xff0c;觉得自己的2021年还是有蛮多收获的&#xff0c;于是在各位卖萌屋小伙伴的鼓励下&#xff0c;就有了本文。收获很多&#xff0c;我从中挑选出来自我感觉对读者来说比较有用的三点。1. 放低期待&#xff0c;学会适当躺平我…

论文浅尝 | P-Adapters: 从具有不同提示的语言模型中鲁棒地提取事实信息

笔记整理&#xff1a;田玺&#xff0c;浙江大学硕士研究生。研究方向&#xff1a;知识图谱、自然语言处理论文地址&#xff1a;https://openreview.net/forum?idDhzIU48OcZh&#xff0c;录用于ICLR2022摘要之前的工作发现&#xff0c;从大型语言模型&#xff08;LLMs&#xff…

LeetCode 470. 用 Rand7() 实现 Rand10()(随机概率)

1. 题目 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数&#xff0c;试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。 不要使用系统的 Math.random() 方法。 示例 1: 输入: 1 输出: [7]示例 2: 输入: 2 输出: [8,4]示例 3: 输入: 3 输出: [8,1,10]提示: rand…

Spring Cloud Stream同一通道根据消息内容分发不同的消费逻辑

应用场景 有的时候&#xff0c;我们对于同一通道中的消息处理&#xff0c;会通过判断头信息或者消息内容来做一些差异化处理&#xff0c;比如&#xff1a;可能在消息头信息中带入消息版本号&#xff0c;然后通过if判断来执行不同的处理逻辑&#xff0c;其代码结构可能是这样的…

图谱实战 | 再谈图谱表示:图网络表示GE与知识图谱表示KGE的原理对比与实操效果分析...

转载公众号 | 老刘说NLP知识图谱嵌入是一个经典话题&#xff0c;在之前的文章《知识表示技术&#xff1a;图谱表示VS图网络表示及基于距离函数的表示学习总结》中&#xff0c;围绕知识图谱嵌入学习这一主题&#xff0c;对比了知识图谱嵌入与图网络嵌入的异同。而在实际工作中&a…

LeetCode 1247. 交换字符使得字符串相同

1. 题目 有两个长度相同的字符串 s1 和 s2&#xff0c;且它们其中 只含有 字符 “x” 和 “y”&#xff0c;你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候&#xff0c;你都可以在两个字符串中各选一个字符进行交换。 交换只能发生在两个不同的字…

图深度学习前沿工作汇总与解析

图深度学习除了可以应用于标准图推理任务以外&#xff0c;还广泛应用于推荐、疾病或药物预测、自然语言处理、计算机视觉、交通预测等领域。可见&#xff0c;基于图的深度学习不仅有助于挖掘现有图数据背后的丰富价值&#xff0c;而且还通过将关系数据自然地建模为图&#xff0…

Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略&#xff08;一&#xff09;&#xff1a;自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试功能&#xff1a;重新入队。 动手试试 准备一个会…