LeetCode 733. 图像渲染(DFS/BFS)

文章目录

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

1. 题目

有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。

给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。

为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。

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

示例 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,1]]
解析: 
在图像的正中间,(坐标(sr,sc)=(1,1)),
在路径上所有符合条件的像素点的颜色都被更改成2。
注意,右下角的像素没有更改为2,
因为它不是在上下左右四个方向上与初始点相连的像素点。

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

2. 解题

要求跟初始位置颜色一样的,相邻都的改颜色(跟朋友圈,岛屿那几题一样)

2.1 DFS

class Solution {int oldCol;int r,c;
public:vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {oldCol = image[sr][sc];r = image.size();c = image[0].size();vector<vector<bool>> visited(r,vector<bool> (c,false));dfs(image, sr, sc, newColor,visited);return image;}void dfs(vector<vector<int>> &image, int sr, int sc, int &newColor, vector<vector<bool>> &visited){if((sr<0 || sr>=r)||(sc<0 || sc>=c))return;if(image[sr][sc] == oldCol && !visited[sr][sc]){image[sr][sc] = newColor;visited[sr][sc] = true;dfs(image, sr-1, sc, newColor,visited);dfs(image, sr+1, sc, newColor,visited);dfs(image, sr, sc-1, newColor,visited);dfs(image, sr, sc+1, newColor,visited);}}
};

在这里插入图片描述

2.2 BFS

class Solution {int oldCol;int r,c;
public:vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {oldCol = image[sr][sc];r = image.size();c = image[0].size();vector<vector<bool>> visited(r,vector<bool> (c,false));vector<vector<int>> dir = {{0,1},{0,-1},{1,0},{-1,0}};queue<pair<int,int>> q;q.push({sr,sc});int xf, yf, x, y, i;visited[sr][sc] = true;while(!q.empty()){xf = q.front().first;yf = q.front().second;image[xf][yf] = newColor;q.pop();for(i = 0; i < 4; ++i){x = xf+dir[i][0];y = yf+dir[i][1];if((x>=0 && x<r)&&(y>=0 && y<c) && !visited[x][y] && image[x][y] == oldCol){q.push({x,y});visited[x][y] = true;//不能在这里改颜色,改了,他一会不能找到他的邻居了,!= oldcolor}}  	}return image;}
};

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

美团外卖Android平台化架构演进实践

美团外卖自2013年创建以来&#xff0c;业务一直高速发展。目前美团外卖日完成订单量已突破1800万&#xff0c;成为美团点评最重要的业务之一。美团外卖的用户端入口&#xff0c;从单一的外卖独立App&#xff0c;拓展为外卖、美团、点评等多个App入口。美团外卖所承载的业务&…

Vue源码探究笔记

对于源代码分析有一个基本原则&#xff1a;要找到它的最早期的版本&#xff0c;比如1.0版本。1.0版本奠定了一款框架的基础结构&#xff0c;之后的版本迭代都是基于这套结构进行更新的。所以掌握了基础结构&#xff0c;那也就掌握了这个框架。这个原则适用于世界上绝大多数事务…

Jarvis:一个值得关注的多模态端到端人机对话框架,针对所有行业适配

说到应用级的人机对话框架&#xff0c;很多人可能首先想到的是RASA开源项目。不过&#xff0c;今天跟大家简要分享一个功能更为丰富、性能更为强劲的多模对话框架——Jarvis&#xff0c;非常值得对话系统从业者关注一下。Jarvis是英伟达于2019年发布的人机对话服务&#xff0c;…

技术动态 | 知识图谱构建的研究已走入下半场,但大规模落地应用仍需时间

本文转载自公众号&#xff1a;AI前线。作者 | 李冬梅 采访嘉宾 | 唐杰知识图谱是近年来人工智能技术蓬勃发展的核心驱动力之一&#xff0c;已广泛应用在金融、电商、医疗、政务等众多领域&#xff0c;经过短短几年的发展&#xff0c;热度依旧不减&#xff0c;未来&#xff0c;知…

LeetCode 542. 01 矩阵(BFS DP)

文章目录1. 题目2. 解题2.1 BFS2.2 DP动态规划1. 题目 给定一个由 0 和 1 组成的矩阵&#xff0c;找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0示例 2: 输入: 0 0 0 0 1 0 1 1 1 输出: 0 0 0 0…

美团旅行销售绩效系统研发实践

背景 O2O是目前互联网竞争最激烈的领域之一&#xff0c;其重要的业务特征是有大规模的线下业务团队&#xff0c;他们分布在五湖四海&#xff0c;直接服务着数以百万的商家&#xff0c;责任很重&#xff0c;管理的难度巨大。能否通过技术手段&#xff0c;打造高效的线下团队&…

深入解析Node.js setTimeout方法的执行过程

深入了解setTimeout源码之前&#xff0c;本有两个选择。一是通过chromium源码分析&#xff0c;二是通过Node.js源码分析。后来发现第一种方案的源码获取成本太大&#xff0c;于是从Node官网获取了几十兆的代码用来了解。 当前的Node版本为&#xff1a;v10.16.0 setTimeout方法定…

别只关注GPT3!细如发丝的模型更具现实杀伤力!

这个世界上有两种极具难度的工程&#xff1a;第一种是把很平常的东西做到最大&#xff0c;例如把语言模型扩大成能够写诗写文写代码的GPT-3&#xff1b;而另一种恰恰相反&#xff0c;是把很平常的东西做到最小。 ----王苏语录GPT3自从诞生以来&#xff0c;便受到…

论文浅尝 - EMNLP2020 | 基于分组式对比学习的神经对话生成

论文笔记整理&#xff1a;叶宏彬&#xff0c;浙江大学计算机博士生。论文地址&#xff1a;https://arxiv.org/abs/2009.07543摘要&#xff1a;近年来&#xff0c;神经对话问答的产生已广受欢迎。现有对话模型学习中广泛采用了最大似然估计目标&#xff08;MLE&#xff09;。但是…

LeetCode 841. 钥匙和房间(DFS/BFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 有 N 个房间&#xff0c;开始时你位于 0 号房间。每个房间有不同的号码&#xff1a;0&#xff0c;1&#xff0c;2&#xff0c;…&#xff0c;N-1&#xff0c;并且房间里可能有一些钥匙能使你进入下一个房间。 在形式上&#xff…

容器中用uwsgi协议部署注意的问题以及用flask部署

1 表示当前容器名 一般通过 docker exec -it 容器名 /bin/bash , 进入容器内部进行操作&#xff0c;比如安装环境&#xff0c;传输文件 2 4888 容器内部访问端口地址&#xff0c;如果对外开放api&#xff0c;需要对其进行映射&#xff0c;比如映射成11022,11022是对外访问的端…

美团点评金融平台Web前端技术体系

背景 随着美团点评金融业务的高速发展&#xff0c;前端研发数量从 2015 年的 1 个人&#xff0c;扩张到了现在横跨北上两地 8 个事业部的将近 150 人。业务新&#xff0c;团队新&#xff0c;前端领域框架技术又层出不穷&#xff0c;各个业务的研发团队在技术选择上没有明确的指…

参会邀请 - CCKS2020 | 2020全国知识图谱与语义计算大会(CCKS2020)明日开幕

本文转载自公众号&#xff1a; 中国中文信息学会。第十四届全国知识图谱与语义计算大会将于2020年11月12日-15日在南昌召开。会议由中国中文信息学会语言与知识计算专业委员会主办&#xff0c;由江西师范大学承办&#xff0c;智源社区提供社区支持。本次会议讲习班采用线上举行…

Linux 程 序 员 失 业 警 告

文 | 小戏有多少人期待过像贾维斯一样的强人工智能&#xff1f;尽管老实说看当下的技术离这一期待还很遥远&#xff0c;但用用类似 GPT-3 这样的技术去实现些朴素的愿望似乎并没有那么困难。就在昨天&#xff0c;来自 Facebook 的 Elvis 在推特上发布了一个借助 OpenAI 的 GPT-…

LeetCode 707. 设计链表(List)

文章目录1. 设计一个单链表2. 双向链表1. 设计一个单链表 在链表类中实现这些功能&#xff1a; get(index)&#xff1a;获取链表中第 index 个节点的值。如果索引无效&#xff0c;则返回-1。 addAtHead(val)&#xff1a;在链表的第一个元素之前添加一个值为 val 的节点。插入…

用Vue.js开发微信小程序:开源框架mpvue解析

前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架。使用此框架&#xff0c;开发者将得到完整的 Vue.js 开发体验&#xff0c;同时为 H5 和小程序提供了代码复用的能力。如果想将 H5 项目改造为小程序&#xff0c;或开发小程序后希望将其转换为 H5&#xff0c;mpvue 将是…

对比学习有多火?文本聚类都被刷爆了…

文 | 花小花Posy大家好&#xff0c;我是小花。对比学习的大火???? 越来越旺了&#xff0c;已然从CV蔓延到NLP了。今天给大家介绍的正是一篇将对比学习应用到文本聚类上的工作&#xff0c;NAACL21新鲜出炉的paper——《Supporting Clustering with Contrastive Learning》。…

论文浅尝 - WWW2020 | 生成多跳推理问题以改善机器阅读理解能力

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生。来源&#xff1a;WWW 2020链接&#xff1a;https://dl.acm.org/doi/pdf/10.1145/3366423.3380114概述这篇论文关注的任务是&#xff1a;基于给定文本的“多跳问题生成”&#xff08;多关系问题&#xff09;。作者提…

记一次Vue框架升级

框架升级背景 公司目前业务迭代很快&#xff0c;且大部分的流量都在公众号上。然而我们公众号所使用的框架却是3年前的Vue 1.0.16。面对Vue这3年来带来的无数新特性&#xff0c;我们只能望洋兴叹&#xff1a;看得见&#xff0c;摸不着&#xff0c;因为升级这事看起来太难了。 …

谈谈NLP下一个主战场:万亿参数的预训练模型!

自从BERT诞生以来&#xff0c;各大互联网巨头之间就展开了预训练语言模型军备竞赛&#xff0c;XLNet、ERNIE、RoBERTa、T5、GPT-3....但当事情进展到号称自己是zero-shot learner的GPT-3时&#xff0c;批判的声音变得明显多了。这么大&#xff0c;能用吗&#xff1f;真的能做到…