LeetCode 1034:边界着色

2023-11-14

问题描述:

给你一个大小为 m x n 的整数矩阵 grid ,表示一个网格。另给你三个整数 rowcol 和 color 。网格中的每个值表示该位置处的网格块的颜色。

将给定单元格[row, col]的联通区域的边界着色成color;

思路:DFS从给定单元格开始遍历,记录visited

从上下左右四个方向开始扩展,如果出界或者值不是原有颜色则是边界存到boarders中;

只要任意方向满足条件那么当前单元格就是边界,存起来;

最后统一处理进行着色;

代码:

class Solution {
public:
    vector<vector<int>> colorBorder(vector<vector<int>>& grid, int row, int col, int color) {
        int m = grid.size();
        if(m == 0) return {};
        int n = grid[0].size();
        if(n == 0) return {};
        int oldColor = grid[row][col];
        dir = {{0,1},{0,-1},{1,0},{-1,0}};
        vector<vector<int>> visited(m,vector<int>(n));
        paintColor(grid,visited,row,col,color,m,n,oldColor);
        for(int i = 0; i < boarders.size(); i++)
        {
            int r = boarders[i][0], c = boarders[i][1];
            grid[r][c] = color;
        }
        return grid;
    }
    bool paintColor(vector<vector<int>>& grid, vector<vector<int>>& visited, int row, int col, int color, int m, int n, int oldColor)
    {
        if(row < 0 || row >= m || col < 0 || col >= n || grid[row][col] != oldColor)
        {
            return true;
        }
        if(visited[row][col])
        {
            return false;
        }
        visited[row][col] = 1;
        bool isBoarder = false;
        for(int i = 0; i < 4; i++)
        {
            isBoarder |= paintColor(grid,visited,row+dir[i][0],col+dir[i][1],color,m,n,oldColor);
            
        }
        //cout << "[" << row << "," << col <<"] is boarder" << isBoarder << endl;
        if(isBoarder)
        {
            boarders.push_back({row,col});
        }
        return false;
    }
private:
    vector<vector<int>> dir;
    vector<vector<int>> boarders;
};

题目地址:力扣

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 1034:边界着色 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • kettle用Rest Client发送http请求

    kettle用Rest Client发送http请求 kettle用add join xml组装复杂的xml报文 kettle配置及性能调优 需求 请求一个服务接口 请求体是一段 json 服务接口响应数据 数据也是 json 形式 这里用
  • 蓝桥杯单片机零基础到国二经验分享

    我参加的是第十三届蓝桥杯大赛 从最开始的零基础 毫无头绪 到拿下国二 颇有体会 在这里将我的备赛经验分享给大家 希望可以帮到一些正在备赛的蓝桥杯er 目录 一 蓝桥杯 单片机组介绍 二 零基础到国二历程 客观题 程序题 1 从零基础到省三
  • 前端DOM操作精解:基础概念、方法与最佳实践

    引言 本文将深入探讨前端开发中的DOM操作 包括基础概念 常用方法和最佳实践 通过清晰易懂的解释和实际案例分析 我们将一起了解如何最有效地使用DOM操作来提升前端应用的用户体验 一 DOM操作入门 在深入探讨DOM操作之前 我们先要理解什么
  • SpringBoot的默认日志框架

    logback日志的集成 总结 1 SpringBoot底层也是使用slf4j logback的方式进行日志记录 a logback桥接 logback classic 2 SpringBoot也把其他的日志都替换成了slf4j a log
  • flutter iOS和安卓的version,build区别

    iOS的version是关键的 build次数不重要 version要大于上一个 build叠加就好 version加1后 build可以从头开始 开发者后台提审的版本号要跟提交的版本号要一致 安卓的就不是了 最重要的是build次数 每次
  • 【算法】解密回文——栈

    上一节中我们学习了队列 它是一种先进先出的数据结构 还有一种是后进先出的数据结构它叫做栈 栈限定只能在一端进行插入和删除操作 比如说有一个小桶 小桶的直径只能放一个小球 我们现在向小桶内依次放入2号 1号 3号小球 假如你现在需要拿出2号小
  • URI、URL和URN的定义和关系

    1 URI URI Universal Resource Identifier 统一资源标志符 URI采用一种特定语法标识一个资源的字符串 所标识的资源可能是服务器上的一个文件 不过 也可能是一个邮件地址 新闻消息 图书 人名 Intern
  • PostgreSQL服务启动时报错:“FATAL: could not create lock file "/tmp/.s.PGSQL.5432.lock": Permission denied”

    PostgreSQL服务启动时报错 FATAL could not create lock file tmp s PGSQL 5432 lock 权限不够 PostgreSQL服务启动时报错 FATAL could not open loc
  • Linux一分钟部署dist

    1 首先保证服务器要有tomcat安装包 如果没有的话 访问http tomcat apache org 选择版本号下载 格式要tar gz的就可以 2 上传安装包并解压 3 运行 解压之后cd切到tomcat目录下面的bin目录 star
  • 关于vue多个项目的管理

    环境 vueCli webpack 应用场景 一套代码需要支持10几家客户 每家的皮肤 功能都有一些小的差异 主体流程大致是一样的 思路 在一个vue的服务中管理多个项目 各项目的功能模块相对独立 但公共部分可以提取为公共组件 并在多个项目
  • kafka相关

    1 为什么使用kafka 以实际业务中用户提现为例 比如一笔交易发生 这笔交易是否是欺诈交易 这笔交易是否已经达到限额了 相关用户是否在黑名单中 交易结果联动短信 Email等渠道通知用户 等等 也许一笔简单的交易 就要与反欺诈系统 黑名单
  • 华为交换机配置SSH远程登陆

    拓扑图 1 配置IP
  • 互联网摸鱼日报(2023-03-03)

    互联网摸鱼日报 2023 03 03 InfoQ 热门话题 在 Istio 中使用 Kata 容器注入工作负载 数字中国顶层设计来了 一图读懂 2522 框架 政策解读 探索 Android 14 首个开发者预览版的新功能与特性 深入银行数
  • T0、T1、TS、D1是什么鬼?一文看懂POS机刷卡到账模式区别和利弊

    经常被一些刚刚接触POS机的朋友问到一个 什么是T0 什么是T1 今天小敏子就和大家来探讨一下几种刷卡到账模式区别和利弊 一 先说一下定义 什么是T T为英文Trade交易的首字母 什么是D D为英文Day 天 的首字母 什么是S S为英文
  • Vue让router-view默认显示任意页面

    场景 一个home页面 点击左边的菜单栏 右边显示页面 因此都知道在右边放一个router view然后配置路由即可 然而问题出现在 重新打开的时候 默认是白色空的 那么解决办法是 在router管理的index js中 加上 redire
  • PHP源码1001PHP源码,某区块链养殖系统平台PHP源码无加密完整版,带充值接口+完整会员系统 可封装APP可二开...

    站长评测 对接的应该是码支付 源码没啥问题 有些功能还没开发完 适合二开 需要的朋友看看 1 只需用330元注册狗狗集市的一个游戏账户 就可以加入我们的大家庭了并可以获得戏猪的称号 第二天才会有收益 2 空闲之余呢您还可以去好友猪子圈里偷猪
  • 线性布局和相对布局的一些属性

    线性布局 LinearLayout orientation 属性是指定线性布局的排列方向 horizontal 水平 vertical 垂直 gravity属性是指定当前控件内容显示位置 left 左边 right 右边 top 上边 bo
  • SoundTouch实现音频变速变调

    音频基础 声音属性 响度 Loudness 音量 与声波的振幅有关 音调 Pitch 音调与声音的频率有关 声音频率越大时 音调就越高 否则就越低 音色 Quality 由物体结构特性所决定 A D转换 Analog to Digital
  • asp.net zero 8.2 学习-9-多租户设置,发送邮件配置

    学习在asp net zero系统中如何切换多租户及没有租户的设置 配置多租户 为实体添加TenantID 数据库迁移 修改DemoObjectAppService服务类的实体创建方法 配置邮件发送 创建租户 并添加数据测试 切换为无租户系
  • LeetCode 1034:边界着色

    问题描述 给你一个大小为 m x n 的整数矩阵 grid 表示一个网格 另给你三个整数 row col 和 color 网格中的每个值表示该位置处的网格块的颜色 将给定单元格 row col 的联通区域的边界着色成color 思路 DFS