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

[LeetCode] 733. 图像渲染

题目描述:

有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr ,  sc 和 color 。你应该从像素 image[sr][sc] 开始对图像进行上色 填充 。

为了完成 上色工作

  1. 从初始像素开始,将其颜色改为 color
  2. 对初始坐标的 上下左右四个方向上 相邻且与初始像素的原始颜色同色的像素点执行相同操作。
  3. 通过检查与初始像素的原始颜色相同的相邻像素并修改其颜色来继续 重复 此过程。
  4. 当 没有 其它原始颜色的相邻像素时 停止 操作。

最后返回经过上色渲染 修改 后的图像 。

示例 1:

输入:image = [[1,1,1],[1,1,0],[1,0,1]],sr = 1, sc = 1, color = 2

输出:[[2,2,2],[2,2,0],[2,0,1]]

解释:在图像的正中间,坐标 (sr,sc)=(1,1) (即红色像素),在路径上所有符合条件的像素点的颜色都被更改成相同的新颜色(即蓝色像素)。

注意,右下角的像素 没有 更改为2,因为它不是在上下左右四个方向上与初始点相连的像素点。

示例 2:

输入:image = [[0,0,0],[0,0,0]], sr = 0, sc = 0, color = 0

输出:[[0,0,0],[0,0,0]]

解释:初始像素已经用 0 着色,这与目标颜色相同。因此,不会对图像进行任何更改。

提示:

  • m == image.length
  • n == image[i].length
  • 1 <= m, n <= 50
  • 0 <= image[i][j], color < 216
  • 0 <= sr < m
  • 0 <= sc < n

题目链接:

. - 力扣(LeetCode)

解题主要思路:

采用广度优先遍历策略即bfs,比如例1,第一层为image[1][1],我们将它入队列,然后检测它的上下左右,符合要求的为image[0][1]和image[1][0],以此为例继续探索第三层。

解题代码:

class Solution {
public:typedef pair<int, int> PII;int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {int pre = image[sr][sc];if (pre == color) return image;int m = image.size(), n = image[0].size();queue<PII> que;que.push(make_pair(sr, sc));while (que.size()) {auto [a, b] = que.front();que.pop();image[a][b] = color;  // 上色for (int i = 0; i < 4; ++i) {// 检测它的上下左右是否需要上色int x = a + dx[i];int y = b + dy[i];if (x >= 0 && x < m && y >= 0 && y < n && image[x][y] == pre) {que.push(make_pair(x, y));}}}return image;}
};

http://www.lryc.cn/news/462796.html

相关文章:

  • 智能EDA小白从0开始 —— DAY23 PyAether深度解析与技术展望
  • 从深海探测到海洋强国:数字孪生助力海洋装备跨越式发展
  • 架构师备考-背诵精华(系统质量属性)
  • Pycharm下载安装教程(详细步骤)+汉化设置教程
  • 网络安全入门
  • 你真的了解Canvas吗--解密十【ZRender篇】
  • mac安装brew时踩坑解决方案
  • 基于Handsontable.js + Excel.js实现表格预览和导出功能(公式渲染)
  • 重学SpringBoot3-集成Redis(十三)之点排行榜实现
  • Java 中方法参数传递的陷阱
  • 哪家云电脑便宜又好用?ToDesk云电脑、顺网云、达龙云全方位评测
  • 【汇编语言】寄存器(内存访问)(三)—— 字的传送
  • 6 机器学习之应用现状
  • 相似度为 K 的字符串
  • [云] Project Analysis
  • 腾讯六宫格本地识别,本地模型识别,腾讯六图识别
  • Transformer图解以及相关的概念
  • Nginx缓存静态文件
  • 【隐私计算】隐语HEU同态加密算法解读
  • 用C#实现互斥操作
  • 【黑马点评优化】之使用Caffeine+Redis实现应用级二层缓存
  • CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)
  • 2.1.ReactOS系统中断描述符的格式KIDTENTRY结构体
  • 三、ElementPlus下拉搜索加弹窗组件的封装
  • androidStudio编译导致的同名.so文件冲突问题解决
  • 大学新生编程入门指南:如何选择编程语言与制定学习计划
  • SpringAI快速上手
  • 07 django管理系统 - 部门管理 - 搜索部门
  • 数据操作学习
  • 什么是网络代理