3127. 构造相同颜色的正方形(24.8.31)

2024-09-01 00:28

本文主要是介绍3127. 构造相同颜色的正方形(24.8.31),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

给你一个二维 3x3 的矩阵 grid,每个格子都是一个字符,要么是 'B' ,要么是 'W'。字符 'W' 表示白色,字符 'B' 表示黑色。
你的任务是改变至多一个格子的颜色,使得矩阵中存在一个 2x2 颜色完全相同的正方形。
如果可以得到一个相同颜色的 2x2 正方形,那么返回 true ,否则返回 false

示例 1:在这里插入图片描述

输入: grid=["B","W","B"],["B","W","W"],["B","W","B"]

输出: true

解释: 修改 grid[0][2] 的颜色,可以满足要求。

示例 2:
在这里插入图片描述

输入: grid=["B","W","W"],["W","W","W"],["B","W","B"]

输出: false

解释: 只改变一个格子颜色无法满足要求。

示例 3:
在这里插入图片描述

输入: grid=["B","B","B"],["W","W","W"],["B","W","B"]

输出: true

解释: grid 已经包含一个 2x2 颜色相同的正方形了。

解题思路

对于 3*3 的格子而言,要想得到 2*2 的格子只需要确定其左上角的点即可知道其余点的位置
假设其左上角点的坐标为(i , j),则其余点为:(i+1 , j),(i+1 , j+1),(i , j+1)
对于一个 2*2 的格子而言,要想满足情况则要求只存在一黑或者一白的状况(假设统计的是白,则白色个数为134,即不为2

代码

class Solution {
public: bool canMakeSquare(vector<vector<char>>& grid) {autocheck=[&](int i,int j){int ans=0;if(grid[i][j]=='W') ans++;if(grid[i+1][j]=='W') ans++;if(grid[i+1][j+1]=='W') ans++;if(grid[i][j+1]=='W') ans++;return ans!=2;};return check(0,0)||check(0,1)||check(1,0)||check(1,1);}
};

这篇关于3127. 构造相同颜色的正方形(24.8.31)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125422

相关文章

spoj705( 求不相同的子串个数)

题意:求串s的不同子串的个数 解题思路:任何子串都是某个后缀的前缀,对n个后缀排序,求某个后缀的前缀的个数,减去height[i](第i个后缀与第i-1 个后缀有相同的height[i]个前缀)。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstrin

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删

渐变颜色填充

GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。 [cpp]  view plain copy print ? BOOL GradientFill(     _In_  HDC hdc,     _In_  PTRIVERTEX pVertex,     _In_  ULONG

C++中类的构造函数调用顺序

当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的 构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。 简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是 要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时, 如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。

如何根据相同分隔符提取间隔数据?

最近遇到很多提问怎么提取字符的,而这些问题都有一个相同的特征,就是要提取的内容与内容之间,都有着相同的分隔符。当然,这种问题直接用“数据” →  “分列”功能就可以一步到位实现的,但有人喜欢折腾,而更多的人又非得指定函数公式的方法,或者更多的是要保持数据的同步性。   下面,我们就来讲讲用函数公式应该怎么实现这个提取,首先来个数据和要求,如下图,将 - 号间隔的内容依次提取到右边单元格内:

eclipse中相同变量显示变色设置

java文件的设置"Window"-"preferences"-"Java"-"Editor"-"Mark Occurrences"复选框勾选 js文件的设  置"Window"-"preferences"-"web"-"javascript"-"Mark Occurrences"复选框勾选 。

Java构造和解析Json数据的两种方法(json-lib构造和解析Json数据, org.json构造和解析Json数据)

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Json数据的方法示例。 一、介绍       JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json

MyBatis学习——解决字段名与实体类属性名不相同的冲突

转载地址:http://www.cnblogs.com/xdp-gacl/p/4264425.html