当前位置: 首页 > news >正文

leetcode1034. 边界着色-medium

1 题目:边界着色

官方标定难度:中

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

如果两个方块在任意 4 个方向上相邻,则称它们 相邻 。

如果两个方块具有相同的颜色且相邻,它们则属于同一个 连通分量 。

连通分量的边界 是指连通分量中满足下述条件之一的所有网格块:

在上、下、左、右任意一个方向上与不属于同一连通分量的网格块相邻
在网格的边界上(第一行/列或最后一行/列)
请你使用指定颜色 color 为所有包含网格块 grid[row][col] 的 连通分量的边界 进行着色。

并返回最终的网格 grid 。

示例 1:

输入:grid = [[1,1],[1,2]], row = 0, col = 0, color = 3
输出:[[3,3],[3,2]]

示例 2:

输入:grid = [[1,2,2],[2,3,2]], row = 0, col = 1, color = 3
输出:[[1,3,3],[2,3,3]]

示例 3:

输入:grid = [[1,1,1],[1,1,1],[1,1,1]], row = 1, col = 1, color = 2
输出:[[2,2,2],[2,1,2],[2,2,2]]

提示:

m == grid.length
n == grid[i].length
1 <= m, n <= 50
1 <= grid[i][j], color <= 1000
0 <= row < m
0 <= col < n

2 solution

深度优先搜索,判断是同一块连通区域内是否为边界值,如果是重新染色。

代码

class Solution {vector<vector<int>> g, vis;int c, cc, dx[4] = {1, -1, 0, 0}, dy[4] = {0, 0, 1, -1}, m, n;void dfs(vector<vector<int>> &grid, int x, int y) {bool flag = false;vis[x][y] = 1;for (int i = 0; i < 4; i++) {int xx = x + dx[i];int yy = y + dy[i];if (xx >= 0 && xx < m && yy >= 0 && yy < n) {if (grid[xx][yy] == cc) {if(!vis[xx][yy]) dfs(grid, xx, yy);} else {flag = true;}}}if (flag || x == 0 || x == m - 1 || y == 0 || y == n -1) g[x][y] = c;}public:vector<vector<int>> colorBorder(vector<vector<int>> &grid, int row, int col, int color) {g = grid, c = color, m = grid.size(), n = grid[0].size(), cc = grid[row][col];vis = vector<vector<int>>(m, vector<int>(n));dfs(grid, row, col);return g;}
};

结果

在这里插入图片描述

http://www.xdnf.cn/news/966691.html

相关文章:

  • 使用mpu6500, PID,互补滤波实现一个简单的飞行自稳控制系统
  • 南昌市新建区委书记陈奕蒙会见深兰科技集团董事长陈海波一行
  • 如何使用 DeepSeek 帮助自己的工作
  • 机械制造系统中 PROFINET 与 PROFIBUS-DP 的融合应用及捷米科技解决方案
  • Matlab点云合并函数pcmerge全解析
  • 线程与协程
  • Prometheus + Grafana 监控 RabbitMQ 实践指南
  • Spring Boot 分层架构与数据流转详解
  • Word中如何对文献应用的格式数字连起来,如:【1-3】
  • 如何看容器的ip地址
  • 每日收获总结20250610
  • 循环结构使用
  • Java 通用实体验证框架:从业务需求到工程化实践【生产级 - 适用于订单合并前置校验】
  • B2B供应链交易平台多商户电商商城系统开发批发采购销售有哪些功能?发展现状如何?
  • 什么是库存周转?如何用进销存系统提高库存周转率?
  • 第五章 GPIO示例
  • PennyLane 是一个用于量子计算、量子机器学习和量子化学的跨平台 Python 库。由研究人员构建,用于研究
  • 向量数据库ChromaDB的使用
  • Vim 复制/剪切/粘贴命令完整学习笔记
  • java Condition类
  • Alerting中配置多个OpsGenie时,如何匹配同一个条件匹配多个opsgenie的contact points
  • 【WiFi帧结构】
  • python/java环境配置
  • Django的HelloWorld程序
  • 1.4 超级终端
  • vue3 hooks的结构和作用和具体场景例子
  • 业财融合怎么做?如何把握业务与财务的边界?
  • @Configuration原理与实战
  • 【Kafka】消息队列Kafka知识总结
  • iview组件库:关于分页组件的使用与注意点