leetcode 221. 最大正方形

  1. 最大正方形
    尝试过
    中等
    相关标签
    相关企业
    在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。

结果:
测试用例超时

示例 1:

输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]

输出:4

cpp 复制代码
class Solution {
public:
    int maximalSquare(vector<vector<char>>& matrix) {

        // 矩阵的行和列
        size_t rows = matrix.size();
        size_t cols = matrix.empty() ? 0 : matrix[0].size();  
        int maxArea = 0;  // 最大面积

        for (size_t i = 0; i < rows; i++) {
            for (size_t j = 0; j < cols; j++) {
                size_t maxLength = min(rows - i, cols - j); // 确保不会越界
                for (size_t l = 1; l <= maxLength; l++) {
                    // 直接检查原始矩阵的子矩阵区域
                    if (isSquare(matrix, i, j, l)) {
                        int area = l * l;
                        if (area > maxArea) {
                            maxArea = area;
                        }
                    }
                }
            }
        }

        return maxArea;
    }

private:
    bool isSquare(const vector<vector<char>>& matrix, int startRow, int startCol, size_t length) {
        // 检查是否为全 1 的正方形
        for (size_t i = 0; i < length; i++) {
            for (size_t j = 0; j < length; j++) {
                if (matrix[startRow + i][startCol + j] == '0') {
                    return false;
                }
            }
        }
        return true;
    }
};
相关推荐
一条叫做nemo的鱼1 小时前
从汇编的角度揭开C++ this指针的神秘面纱(上)
汇编·c++·算法·函数调用·this指针·参数传递
安全系统学习1 小时前
网络安全之内核初级对抗技术分析
开发语言·python·算法·安全·web安全
@解忧杂货铺4 小时前
基于用户的协同过滤推荐算法实现(Java电商平台)
算法·机器学习·推荐算法
爱coding的橙子4 小时前
每日算法刷题Day31 6.14:leetcode二分答案2道题,结束二分答案,开始枚举技巧,用时1h10min
算法·leetcode·职场和发展
@ chen4 小时前
龟兔赛跑算法(Floyd‘s Cycle-Finding Algorithm)寻找重复数
算法
晨曦学习日记4 小时前
leetcode题解538:把二叉搜索树转换为累加树
算法
孟大本事要学习4 小时前
算法第13天|继续学习二叉树:平衡二叉树(递归)、二叉树所有路径(递归)、左叶子之和(递归)
学习·算法
无聊的小坏坏4 小时前
一文详解前缀和:从一维到二维的高效算法应用
数据结构·算法
泽02024 小时前
C++之模板进阶
开发语言·c++·算法
蒙奇D索大5 小时前
【数据结构】图论最短路圣器:Floyd算法如何用双矩阵征服负权图?
数据结构·算法·矩阵·图论·图搜索算法