【力扣hot100】 221. 最大正方形

一、题目

复制代码
在一个由 '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

示例 2:
复制代码
输入:matrix = [["0","1"],["1","0"]]
输出:1

示例 3:
输入:matrix = [["0"]]
输出:0


提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 300
matrix[i][j] 为 '0' 或 '1'

二、思路

看着感觉是动态规划,但一时半会感觉想不出来,直接问gpt了。

给出的思路也很简单,就是反复在(左,上,左上)取小并加一,验证正方形的最大边即可。本质就是以 dpij 为左下角,最大正方形的边长。

三、题解

cpp 复制代码
class Solution {
public:
    int maximalSquare(vector<vector<char>>& matrix) {
        vector<vector<int>> dp(matrix.size(),vector<int>(matrix[0].size(),0));
        int maxValue=0;
        for(int i=0;i<matrix.size();i++){
            for(int j=0;j<matrix[0].size();j++){
                if(matrix[i][j]=='1'){
                    if(i==0||j==0){
                        dp[i][j]=1;
                    }
                    else{
                        dp[i][j]=min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]))+1;
                    }
                    maxValue=max(dp[i][j],maxValue);
                }
            }
        }
        return maxValue*maxValue;
    }
};
相关推荐
爱勇宝6 小时前
大多数人不是在使用 AI 赚钱,而是在帮 AI 公司赚钱
前端·后端·程序员
冬奇Lab7 小时前
每日一个开源项目(第143篇):page-agent - 纯 JS 的网页 GUI Agent,无需截图、无需插件、无需后端
前端·人工智能·agent
To_OC8 小时前
LC 994 腐烂的橘子:人人都说是 BFS 入门题,我却写了三遍才过
javascript·算法·leetcode
IT_陈寒11 小时前
React的这个渲染问题连官方文档都没说清楚
前端·人工智能·后端
金銀銅鐵12 小时前
[Python] 扩展欧几里得算法
python·数学·算法
追逐时光者13 小时前
别再满网找零散工具了,腾讯 QQ 浏览器这个“帮小忙”工具箱真能省时间
前端·后端
To_OC14 小时前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
Asmewill15 小时前
grep&curl命令学习笔记
前端
stringwu15 小时前
Flutter 开发必备:MVI 架构的高效实现指南
前端·flutter
用户21366100357216 小时前
Vue2组件化开发与父子通信
前端·vue.js