前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Leetcode -733.图像渲染 -744.寻找比目标字母大的最小字母】

【Leetcode -733.图像渲染 -744.寻找比目标字母大的最小字母】

作者头像
YoungMLet
发布2024-03-01 10:01:01
760
发布2024-03-01 10:01:01
举报
文章被收录于专栏:C++/Linux

Leetcode -733.图像渲染

题目:有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。 你也被给予三个整数 sr, sc 和 newColor 。你应该从像素 image[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,因为它不是在上下左右四个方向上与初始点相连的像素点。

示例 2 : 输入 : image = [[0, 0, 0], [0, 0, 0]], sr = 0, sc = 0, newColor = 2 输出 : [[2, 2, 2], [2, 2, 2]]

提示 : m == image.length n == image[i].length 1 <= m, n <= 50 0 <= image[i][j], newColor < 216 0 <= sr < m 0 <= sc < n

代码语言:javascript
复制
		const int dx[4] = { 1,-1,0,0 };
		const int dy[4] = { 0,0,1,-1 };
		
		void dfs(int** image, int row, int col, int x, int y, int currcolor, int color)
		{
		    //如果当前坐标像素值等于初始坐标像素值,进行深度搜索
		    if (image[x][y] == currcolor)
		    {
		        //先将当前元素像素值改成需要改变的颜色的像素
		        image[x][y] = color;
		
		        //再判断该坐标的上下左右坐标
		        for (int i = 0; i < 4; i++)
		        {
		            int rx = x + dx[i], cy = y + dy[i];
		            if (rx >= 0 && rx < row && cy >= 0 && cy < col)
		            {
		                dfs(image, row, col, rx, cy, currcolor, color);
		            }
		        }
		    }
		}
		
		int** floodFill(int** image, int imageSize, int* imageColSize, int sr, int sc, int color, int* returnSize, int** returnColumnSizes)
		{
		    //返回的行长度
		    *returnSize = imageSize;
		
		    //返回的列,因为需要返回的是二维数组,需要将原二维数组的列数一个一个放入返回的列二维数组
		    *returnColumnSizes = (int*)malloc(sizeof(int) * imageSize);
		    for (int i = 0; i < imageSize; i++)
		    {
		        (*returnColumnSizes)[i] = imageColSize[0];
		    }
		
		    //记录初始坐标的像素值
		    int currcolor = image[sr][sc];
		
		    //如果初始坐标像素值不等于需要修改的颜色值,进入dfs函数进行深度搜索
		    //否则直接返回原数组
		    if (currcolor != color)
		    {
		        dfs(image, imageSize, imageColSize[0], sr, sc, currcolor, color);
		    }
		
		    return image;
		}

Leetcode -744.寻找比目标字母大的最小字母

题目:给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。

返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。

示例 1: 输入 : letters = [“c”, “f”, “j”],target = “a” 输出 : “c” 解释:letters 中字典上比 ‘a’ 大的最小字符是 ‘c’。

示例 2 : 输入 : letters = [“c”, “f”, “j”], target = “c” 输出 : “f” 解释:letters 中字典顺序上大于 ‘c’ 的最小字符是 ‘f’。

示例 3 : 输入 : letters = [“x”, “x”, “y”, “y”], target = “z” 输出 : “x” 解释:letters 中没有一个字符在字典上大于 ‘z’,所以我们返回 letters[0]。

提示: 2 <= letters.length <= 10^4 letters[i] 是一个小写字母 letters 按非递减顺序排序 letters 最少包含两个不同的字母 target 是一个小写字母

代码语言:javascript
复制
		char nextGreatestLetter(char* letters, int lettersSize, char target)
		{
		    //如果当前字母大于 target ,因为数组是非递减顺序,所以直接返回这个元素
		    //否则返回第一个字母
		    for (int i = 0; i < lettersSize; i++)
		    {
		        if (letters[i] > target)
		        {
		            return letters[i];
		        }
		    }
		    return letters[0];
		}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Leetcode -733.图像渲染
  • Leetcode -744.寻找比目标字母大的最小字母
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档