LeetCode 130. 被围绕的区域(图的BFS/DFS)

文章目录

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

1. 题目

给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。

找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。

示例:
X X X X
X O O X
X X O X
X O X X
运行你的函数后,矩阵变为:X X X X
X X X X
X X X X
X O X X

解释:
任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。

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

2. 解题

  • 对四周的O进行BFS或者DFS,将其改为-
  • 最后将O改成X,将-改成O

2.1 BFS

class Solution {int m, n;
public:void solve(vector<vector<char>>& board) {if(board.empty())return;m = board.size(), n = board[0].size();int i, j;for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if((i==0 || i==m-1 || j == 0 || j == n-1) && board[i][j] == 'O')BFS(board,i,j);}}for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if(board[i][j] == 'O')board[i][j] = 'X';else if(board[i][j] == '-')board[i][j] = 'O';}}}void BFS(vector<vector<char>>& board, int i, int j){queue<pair<int,int>> q;vector<vector<int>> dir = {{-1,0},{1,0},{0,1},{0,-1}};q.push({i,j});pair<int,int> tp;board[i][j] = '-';int k, x, y;while(!q.empty()){tp = q.front();q.pop();for(k = 0; k < 4; ++k){x = dir[k][0]+tp.first;y = dir[k][1]+tp.second;if(x>=0 && x<m && y>=0 && y<n && board[x][y]=='O'){q.push({x,y});board[x][y] = '-';}}}}
};

2.2 DFS

class Solution {int m, n;
public:void solve(vector<vector<char>>& board) {if(board.empty())return;m = board.size(), n = board[0].size();int i, j;vector<vector<int>> dir = {{-1,0},{1,0},{0,1},{0,-1}};for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if((i==0 || i==m-1 || j == 0 || j == n-1) && board[i][j] == 'O')DFS(board,i,j,dir);}}for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if(board[i][j] == 'O')board[i][j] = 'X';else if(board[i][j] == '-')board[i][j] = 'O';}}}void DFS(vector<vector<char>>& board, int i, int j, vector<vector<int>> &dir){board[i][j] = '-';int x, y;for(int k = 0; k < 4; ++k){x = dir[k][0]+i;y = dir[k][1]+j;if(x>=0 && x<m && y>=0 && y<n && board[x][y]=='O')DFS(board,x,y,dir);}}
};

在这里插入图片描述

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

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

相关文章

论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估

笔记整理 | 谭亦鸣&#xff0c;东南大学博士生来源: ECIR 2021在这篇工作中&#xff0c;作者对两种SOTA实体对齐方法做了广泛的研究&#xff1a;首先仔细分析了现有benchmark的过程&#xff0c;并论证了其中存在一些缺陷&#xff0c;使得原始方法给出的实验结果之间可能存在不可…

Android App包瘦身优化实践

随着业务的快速迭代增长&#xff0c;美团App里不断引入新的业务逻辑代码、图片资源和第三方SDK&#xff0c;直接导致APK体积不断增长。包体积增长带来的问题越来越多&#xff0c;如CDN流量费用增加、用户安装成功率降低&#xff0c;甚至可能会影响用户的留存率。APK的瘦身已经是…

NLP界新SOTA!吸纳5000万级知识图谱,一举刷爆54个中文任务!

大家还记得2019年底首次将GLUE榜单分数刷过90大关的百度ERNIE模型吗&#xff1f;在随后一年多的时间里&#xff0c;又陆续出现了GPT-3、Switch Transformer等一众靠模型体量取胜的千亿乃至万亿参数规模的超大预训练模型&#xff0c;似乎新训一个预训练模型没有个千亿参数都不好…

LeetCode 543. 二叉树的直径(DFS)

1. 题目 给定一棵二叉树&#xff0c;你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例 : 给定二叉树1/ \2 3/ \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意&#xff1a;两结点之…

论文浅尝 | 用于嵌套命名实体识别的二部平面图网络(BiFlaG)

笔记整理 | 栾岱洋&#xff0c;东南大学来源&#xff1a;ACL 2020链接&#xff1a;https://www.aclweb.org/anthology/2020.acl-main.571.pdf本文提出了一种可以实现重叠主体的识别的BiFlaG&#xff08;bipartite flatgraph network&#xff09;模型&#xff0c;包含两个子图模…

不是所有问题都适合用神经网络去搞!

文 | YukiRain知乎不是所有问题都适合用神经网络预测&#xff0c;YukiRain总结了以下几种不适合用神经网络做预测的场景&#xff1a;小样本情况&#xff0c;无论是低维还是高维&#xff0c;不如SVM和贝叶斯模型低维数据&#xff0c;大样本量&#xff0c;不如各种ensemble类算法…

从Google白皮书看企业安全最佳实践

前不久Google发布了一份安全方面的白皮书Google Infrastructure Security Design Overview&#xff0c;直译的版本可以参考“网路冷眼”这版《Google基础设施安全设计概述》&#xff0c;直译点评的版本可以参考“职业欠钱”的《Google基础设施安全设计概述翻译和导读》。 此前G…

LeetCode 415. 字符串相加(大数加法)

1. 题目 给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和。 注意&#xff1a;num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和num2 都不包含任何前导零。 你不能使用任何內建 BigInteger 库&#xff0c; 也不能直接将输入的字符串…

会议交流 | 智能风控技术峰会(请关注图分析相关论坛)

2021年5月15日&#xff0c;9:00-18:00&#xff0c;DataFunSummit——智能风控技术峰会将如约而至&#xff0c;本次峰会由3位主席和8位出品人精心策划而成&#xff0c;邀请来自业界的40余位嘉宾从风控系统的架构&#xff0c;到智能风控的核心算法&#xff0c;再到内容、金融、交…

深度学习,路在何方?

文 | Severus最近&#xff0c;AI领域的三位图灵奖获得者Yoshua Bengio、Yann LeCun和Geoffrey Hinton共同发表了一篇文章&#xff0c;名为Deep Learning for AI&#xff0c;文中讨论了深度学习的起源、发展、成就及未来。文章标题&#xff1a;Deep Learning for AI原文链接&…

前端渲染引擎doT.js解析

背景 前端渲染有很多框架&#xff0c;而且形式和内容在不断发生变化。这些演变的背后是设计模式的变化&#xff0c;而归根到底是功能划分逻辑的演变&#xff1a;MVC—>MVP—>MVVM&#xff08;忽略最早混在一起的写法&#xff0c;那不称为模式&#xff09;。近几年兴起的R…

elasticsearch7使用指导

目录结构&#xff1a; 一、es概述 二、es安装/head插件安装/kibana安装 三、es核心概念 四、IK分词器 五、RestFul操作 六、CRUD(增删改查) 七、Springboot集成es ---------------------------------------分割线&#xff1a;正文------------------------------------…

开源开放 | 欢迎选修浙江大学《知识图谱》开放共享慕课

点击“阅读原文”或扫描图中二维码进入课程教学计划第一章知识图谱概论1.1 语言与知识1.2 知识图谱的起源1.3 知识图谱的价值1.4 知识图谱的技术内涵第二章知识图谱的表示2.1 什么是知识表示2.2 人工智能历史发展长河中的知识表示2.3 知识图谱的符号表示方法2.4 知识图谱的向量…

LeetCode 43. 字符串相乘(大数乘法)

文章目录1. 题目2. 小学竖式乘法2.1 普通版2.2 优化版1. 题目 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 示例 1: 输入: num1 "2", num2 "3" 输出: "6&q…

旅游推荐系统的演进

度假业务在整个在线旅游市场中占据着非常重要的位置&#xff0c;如何做好做大这块蛋糕是行业内的焦点。与美食或酒店的用户兴趣点明确&#xff08;比如找某个确定的餐厅或者找某个目的地附近的酒店&#xff09;不同&#xff0c;旅游场景中的用户兴趣点&#xff08;比如周末去哪…

预训练卷不动,可以卷输入预处理啊!

文 | 德志编 | 小戏目前伴随着预训练预言模型的兴起&#xff0c;越来越多的 NLP 任务开始脱离对分词的依赖。通过 Fine-Tune Bert 这类预训练预言模型&#xff0c;能直接在下游任务上取得一个很好的结果。同时也有文章探讨中文分词在神经网络时代的必要性。对于分词任务本身也是…

检索式问答以及评论观点抽取+情感分析

3款开发者神器&#xff0c;快速搭建「检索、问答、情感分析」应用&#xff01; 人工智能与算法学习 于 2021-12-30 08:10:00 发布 26 收藏 文章标签&#xff1a; 百度 大数据 机器学习 人工智能 数据分析 原文链接&#xff1a;https://mp.weixin.qq.com/s?__bizMzIyOTkyOTE…

征稿 | Call for papers on Knowledge Graphs

Knowledge graph是Data Intelligence的核心主题和期刊特色之一。为持续展示这一领域的最新进展和前沿成果&#xff0c;Data Intelligence正在与国际学者一道策划两期Knowledge graph专辑。期待大家关注并积极投稿参与&#xff01;DI专辑Special Issue on Personal Health Knowl…

LeetCode 179. 最大数(自定义谓词函数--Lambda表达式--排序)

1. 题目 给定一组非负整数&#xff0c;重新排列它们的顺序使之组成一个最大的整数。 示例 1: 输入: [10,2] 输出: 210示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。来源&#xff1a;力扣&#xff08…

python实现requests访问接口,比如es接口

首先我们先引入requests模块 import requests一、发送请求 r requests.get(https://api.github.com/events) # GET请求 r requests.post(http://httpbin.org/post, data {key:value}) # POST请求 r requests.put(http://httpbin.org/put, data {key:value}) # PUT请求 r…