题目:
给你一个二维 3 x 3 的矩阵 grid ,每个格子都是一个字符,要么是 'B' ,要么是 'W' 。字符 'W' 表示白色,字符 'B' 表示黑色。
你的任务是改变 至多一个 格子的颜色,使得矩阵中存在一个 2 x 2 颜色完全相同的正方形。
如果可以得到一个相同颜色的 2 x 2 正方形,那么返回 true ,否则返回 false 。
示例 1:
输入:grid = [[“B”,”W”,”B”],[“B”,”W”,”W”],[“B”,”W”,”B”]]
输出:true
解释:
修改 grid[0][2] 的颜色,可以满足要求。
示例 2:
输入:grid = [[“B”,”W”,”B”],[“W”,”B”,”W”],[“B”,”W”,”B”]]
输出:false
解释:
只改变一个格子颜色无法满足要求。
示例 3:
输入:grid = [[“B”,”W”,”B”],[“B”,”W”,”W”],[“B”,”W”,”W”]]
输出:true
解释:
grid 已经包含一个 2 x 2 颜色相同的正方形了。
提示:
grid.length == 3grid[i].length == 3grid[i][j]要么是'W',要么是'B'。
思路:
简单题,无需多盐
代码:
class Solution {
public:
    bool canMakeSquare(vector<vector<char>>& grid) {
        // 第一种2 * 2
        int cnt_W = 0;
        if (grid[0][0] == 'W') cnt_W++;
        if (grid[0][1] == 'W') cnt_W++;
        if (grid[1][0] == 'W') cnt_W++;
        if (grid[1][1] == 'W') cnt_W++;
        if (cnt_W != 2) return true;
        // 第二种2 * 2
        cnt_W = 0;
        if (grid[0][1] == 'W') cnt_W++;
        if (grid[0][2] == 'W') cnt_W++;
        if (grid[1][1] == 'W') cnt_W++;
        if (grid[1][2] == 'W') cnt_W++;
        if (cnt_W != 2) return true;
        // 第三种2 * 2
        cnt_W = 0;
        if (grid[1][0] == 'W') cnt_W++;
        if (grid[1][1] == 'W') cnt_W++;
        if (grid[2][0] == 'W') cnt_W++;
        if (grid[2][1] == 'W') cnt_W++;
        if (cnt_W != 2) return true;
        // 第四种2 * 2
        cnt_W = 0;
        if (grid[1][1] == 'W') cnt_W++;
        if (grid[1][2] == 'W') cnt_W++;
        if (grid[2][1] == 'W') cnt_W++;
        if (grid[2][2] == 'W') cnt_W++;
        if (cnt_W != 2) return true;
        // 全都没可能
        return false;
    }
};