(刷题笔记) Leetcode 面试题 08.10. 颜色填充

leetcode 733. 图像渲染 & 面试题 08.10. 颜色填充(2020.8.16) 【题目】733. 图像渲染 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。 为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他... 阅读详情

题目

编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。

待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的横坐标为 sr 纵坐标为 sc。需要填充的新颜色为 newColor 。

「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。

请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。

示例:

 输入:
 image = [[1,1,1],[1,1,0],[1,0,1]] 
 sr = 1, sc = 1, newColor = 2
 输出:[[2,2,2],[2,2,0],[2,0,1]]
解释: 
 初始坐标点位于图像的正中间,坐标 (sr,sc)=(1,1) 。
 初始坐标点周围区域上所有符合条件的像素点的颜色都被更改成 2 。
 注意,右下角的像素没有更改为 2 ,因为它不属于初始坐标点的周围区域。

提示:

image 和 image[0] 的长度均在范围 [1, 50] 内。
初始坐标点 (sr,sc) 满足 0 <= sr < image.length 和 0 <= sc < image[0].length 。
image[i][j] 和 newColor 表示的颜色值在范围 [0, 65535] 内。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/color-fill-lcci

解题思路

这道题目是我按标签顺着找的,所以直接就能顺着深度优先搜索(dfs)的思想去想。
其实看到提干描述还是挺亲切的,学了一年多图像,虽然都只是调调函数调调参,但是这些关于图像描述的算法看到还是挺熟悉的。
很像是查找连通域里面的一步,从函数名也可以看到是floodfill,漫水填充。

dfs的思路就不多说了,最主要的是学会拆分题目,想好每一步要做什么,以及终止的条件。

这里终止的条件比较明显,一个是图像矩阵的边界,一个是不满足连通的要求。这里的连通就是题目里描述的四领域里有相同的值,这里拆解为dfs,所以不考虑邻域,就考虑值是否相等。

然后就是dfs拆解出来的实现检查四邻域。

代码(C++)

class Solution {
public:

    void dfs(vector<vector<int>>& image,int i,int j,int oldColor,int newColor){

        if(i>=image.size()||j>=image[0].size()||i<0||j<0) return;
        if(image[i][j]!=oldColor) return;

        if(image[i][j]==oldColor){
            image[i][j]=newColor;
            dfs(image,i+1,j,oldColor,newColor);
            dfs(image,i,j+1,oldColor,newColor);
            dfs(image,i-1,j,oldColor,newColor);
            dfs(image,i,j-1,oldColor,newColor);
        }
    }
    
    vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
    
        int oldColor=image[sr][sc];
        
        if(oldColor!=newColor){
            dfs(image,sr,sc,oldColor,newColor);
        }
             
        return image;
    }
};
室内无人机自主定位:融合Mid360激光雷达与光流传感器的无GPS导航实践 本文详细介绍了室内无人机自主定位技术,通过融合Mid360激光雷达与光流传感器实现无GPS导航。文章分析了技术挑战、硬件配置、算法优化及实战调试,展示了在复杂室内环境中如何实现厘米级定位精度,为仓库巡检、隧道勘测等场景提供可靠解决方案。 阅读详情

相关推荐

关于并网继电器的继电器自检逻辑及实现方式

对于常规的光伏并网逆变器来说,继电器控制至关重要。继电器一般位于逆变电感后,共模电感前,用于将逆变电压与电网电压脱开,一般国外有双继电器的安规强制认证要求,国内目前只需要单继电器要求(后续应该会有双继电器要求,个人感觉)

weixin_29982209的博客 2615

【leetcode】 面试题 08.10. 颜色填充

求某个点的相邻区域

落雨碎江南 301

Ubuntu 24.04中文输入法终极指南:从安装到疑难排解

本文是Ubuntu 24.04中文输入法的完整指南,详细介绍了如何通过图形界面或命令行安装和配置Intelligent Pinyin输入法。内容涵盖IBus框架的运作原理、输入法快捷键调校、模糊音设置,并重点解决了Qt应用无法输入中文的疑难问题,最后提供了Fcitx5备选方案及常见故障的排解方法。

weixin_29294975的博客 1245

LeetCode 颜色填充 (JavaScript)

颜色填充(JavaScript)两种解法

weixin_62927958的博客 237

三维重建Fusion中的TSDF算法通俗描述

看个视频 https://www.youtube.com/watch?v=8M_-lSYqACo 这是mobilefusion的视频,大家先了解一下,看到在三维重建的时候外面有个长方体包围盒了吗? 数据准备: 我们不同角度拍摄的RGB图、深度图和相应的pose.txt。 步骤: 1.建立长方体包围盒 要建立一个长方体包围盒。让所有的三维点都在这个长方体里面。 假设z方向垂直相机。 很明显,x,y方...

qq_30339595的博客 1万+

2026从0到1!C#工控机开发实战指南:新手一周就能跑通的完整项目

这篇文章摘要如下: 工业自动化领域工控机开发入门指南,针对零基础开发者提供从环境搭建到项目实战的全流程指导。文章首先解答工控机开发的3个核心问题,比较工控机与普通PC的区别,推荐使用C#作为开发语言。随后详细讲解开发环境配置、四大核心技术栈(通信协议、数据库、UI框架、多线程),并重点演示Modbus TCP通信的实现。最后通过一个完整的温度监控系统项目实战,展示如何用WPF构建实时数据采集界面,包括Modbus通信类编写、数据采集服务实现等关键代码片段。全文采用图解+代码的方式,帮助开发者快速掌握工控系统

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 704

力扣-面试题 08.10题 颜色填充(C++)- BFS

题目链接:https://leetcode-cn.com/problems/color-fill-lcci/ 题目如下: class Solution { public: vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) { int m=image.size(); if(m==0) re

qq_40467670的博客 601

maya导入导出bvh 自动 脚本

maya打开bvh脚本

jacke121的专栏 1551

『LeetCode|每日一题』---->颜色填充

编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。 待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的行坐标为 sr 列坐标为 sc。需要填充的新颜色为 newColor 。 「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。

weixin_51065489的博客 978

如何理解下一代ERP 即:华为MetaERP

如何理解下一代ERP 即:华为MetaERP 华为的 MetaERP核心定位: 华为MetaERP是华为公司自主研发的下一代企业核心商业管理系统。它不仅仅是一个传统的ERP(企业资源规划)系统,更是一个面向未来、基于云原生、AI驱动、安全可信的企业核心管理平台。

金牌架构师 1142

分布式爬虫架构实战:Scrapy+RabbitMQ+浏览器池,百万级数据抓取成本直降60%(附架构图+源码)

任务调度瓶颈:Redis 作为消息队列,不支持复杂任务优先级,高并发下容易消息堆积,且单点故障会导致全量任务丢失;资源浪费严重:每个爬虫节点每次爬取动态页面都启动新浏览器,启动耗时3-5秒,CPU 占用率高达80%+,单机最多同时跑3个浏览器;扩展性差:新增节点需要手动同步任务队列,节点忙闲不均,无法根据任务量动态分配资源。# 从settings读取RabbitMQ配置# 注册信号:爬虫关闭时关闭RabbitMQ连接"""启动时建立RabbitMQ连接"""

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1618

面试题 08.10. 颜色填充

面试题 08.10. 颜色填充 https://leetcode-cn.com/problems/color-fill-lcci/ 难度简单12收藏分享切换为英文关注反馈 编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。 待填充的图像用二维数组image表示,元素为初始颜色值。初始坐标点的横坐标为sr纵坐标为sc。需要填充的新颜色为newColor。 「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 请用新颜色填充初始坐标点的周围区域,并返回填充...

肥不溜秋大梅子 543

2、Elixir与Erlang:构建高可用系统的利器

本文介绍了Elixir与Erlang在构建高可用系统方面的优势,深入探讨了Erlang的并发机制、容错能力以及分布式特性,并结合实际应用场景展示了其在服务器端开发中的强大能力。此外,还提供了学习资源和交流平台,帮助开发者快速上手并深入实践。

grape的博客 125

LeetCode 面试题 08.10. 颜色填充(BFS)

编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的横坐标为 sr 纵坐标为 sc。需要填充的新颜色为 newColor 。 「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。

晴空๓ 1447

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【LeetCode每日一题】——面试题 08.10. 颜色填充

编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。 待填充的图像用二维数组 `image` 表示,元素为初始颜色值。初始坐标点的行坐标为 `sr` 列坐标为 `sc`。需要填充的新颜色为 `newColor` 。 「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。

IronmanJay 1247

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

刷题-Leetcode-面试题 08.10. 颜色填充

面试题 08.10. 颜色填充 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/color-fill-lcci/submissions/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 题目分析 参考链接:十分简单的递归代码解决问题 image[sr][sc]==initColor 为周围区域 class Solution { public: void backtracking(vector<vector&

qq_42771487的博客 8055

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

力扣面试题 08.10. 颜色填充(java DFS解法)

力扣面试题 08.10. 颜色填充(java DFS解法)

LNsupermali的博客 993

Leetcode刷题笔记——数组与字符串篇

本文介绍了面试中喜欢考的与数组和字符串相关的面试题型,提供了每道题的python解法,面试加油,冲~

qq_42898642的博客 1455

菜鸟刷题之路——Q25:颜色填充

问题:面试题 08.10. 颜色填充   问题来自leetCode。 分析   首先,需要将该问题转化成一个图的问题。其实还是比较容易想到的。   问题是让我们找到和目标点相连的所有区域,很容易想到图论中的连通图。将整个image看做是一张图,即问题转化成对当前的图寻找包含给定节点的最大连通子图问题. 典型的DFS问题。 Code class Solution { public int myColor = 0; public int newColorr = 0; public bo

yindarui 274

【Python】【难度:简单】Leetcode 面试题 08.10. 颜色填充

编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。 待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的横坐标为 sr 纵坐标为 sc。需要填充的新颜色为 newColor 。 「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。 示例: 输入: image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1, sc = 1, newColor = 2 输出:[[2..

thomashhs12的博客 364

LeetCode《程序员面试金典》面试题 08.10. 颜色填充

LeetCode 面试题 08.10. 颜色填充题目解题 题目 解题 用的是深度优先搜索: // javascript var floodFill = function(image, sr, sc, newColor) { if (image[sr][sc] !== newColor) { // 如果颜色一致则不需要修改 paintImg(image, sr, sc, image[sr][sc], newColor); } return image; }; va

235

力扣 面试题 08.10. 颜色填充

题目 编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。 待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的行坐标为 sr 列坐标为 sc。需要填充的新颜色为 newColor 。 「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。 示例 输入: image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1, sc = 1, newColor = 2 输出:[[2,2,2],[

(ง •_•)ง没有困难的工作,只有勇敢的狗狗 227

LeetCode 面试题 08.10. 颜色填充-深度优先搜索

/** 面试题 08.10. 颜色填充 * @author 作者 Your-Name: * @version 创建时间:2020年3月1日 上午11:19:09 *颜色填充。编写函数,实现许多图片编辑软件都支持的“颜色填充”功能。给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色值填入这个点的周围区域,直到原来的颜色值全都改变。 示例1: 输入: image...

l769440473的博客 552

面试题 08.10 颜色填充(java)(dfs)

颜色填充。编写函数,实现许多图片编辑软件都支持的“颜色填充”功能。给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色值填入这个点的周围区域,直到原来的颜色值全都改变。 示例1: 输入: image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1, sc = 1, newColor = 2 输出:[[2,2,2],[2,2,0],[2,0,...

weixin_43306331的博客 762

LeetCode 面试题 08.10. 颜色填充

面试题 08.10. 颜色填充 编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。 待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的行坐标为 sr 列坐标为 sc。需要填充的新颜色为 newColor 。 「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。 示例: 输入: image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1, sc = 1, newColor =

Daylight629博客 216

#力扣 LeetCode面试题 08.10. 颜色填充 @FDDLC

题目描述: https://leetcode-cn.com/problems/color-fill-lcci/ Java代码: class Solution { public void f(Stack stack,int[][] img,int r,int c,int nc){ img[r][c]=nc; stack.push(new int[]{r,c}); } public int[][] floodFill(int[][] img,.

LiuXingchang的博客 402
上一篇: (刷题笔记) Leetcode 690. 员工的重要性
下一篇: (刷题笔记) Leetcode 733. 图像渲染
Lucky&Happy
博客等级 码龄10年 1粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值