leetcode 221. 最大正方形

题目如下

数据范围

典型的动态规划题。

令f(i,j)为以i,j为右下角左边正方形的最大边长,

当且仅当f(i,j) > 0(即 矩阵(ij)不为'0')时

f(i,j) = min(f(i,j - 1),f(i - 1,j - 1),f(i - 1,j))

对这个方程不太理解的话借用leetcode官方的图

也就是说边长为n的正方形可以由3个边长n-1的正方形以及边长1的正方形组成。

通过代码

cpp 复制代码
class Solution {
public:
   int maximalSquare(vector<vector<char>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();
        int max1 = 0;
        vector<vector<int>> dp(m,vector<int>(n));
        for(int i = 0;i < m;i++) {
            for(int j = 0;j < n;j++) {
                if(matrix[i][j] == '1'){dp[i][j] = 1;max1 = 1;}
                else dp[i][j] = 0;
            }
        }
    for(int i = 1;i < m;i++) {
        for(int j = 1;j < n;j++) {
            if(dp[i][j] == 1) dp[i][j] = min(min(dp[i - 1][j - 1],dp[i - 1][j]),dp[i][j - 1]) + 1;
           
            max1 = max(max1,dp[i][j]);
        }
        
    }
  
    return max1 * max1;
}
};
相关推荐
小O的算法实验室13 小时前
2023年CIE SCI2区TOP,ACO+PSO+A*:一种用于 AUV 多任务路径规划的双层混合算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
么么...13 小时前
布隆过滤器详解:原理、实现与应用
java·数据结构·哈希算法·散列表
Ro Jace13 小时前
A Real-Time Cross Correlator for Neurophysiological Research
人工智能·python·算法
Sheep Shaun13 小时前
深入理解红黑树:从概念到完整C++实现详解
java·开发语言·数据结构·c++·b树·算法
Dave.B13 小时前
:vtkBooleanOperationPolyDataFilter 布尔运算全解析
算法·vtk
楼田莉子13 小时前
CMake学习:入门及其下载配置
开发语言·c++·vscode·后端·学习
易晨 微盛·企微管家13 小时前
2025企业微信AI智能机器人实战指南:3步实现客服自动化
大数据·人工智能·算法
jiaguangqingpanda13 小时前
Day26-20260122
java·算法·排序算法
夜月yeyue14 小时前
VFS (虚拟文件系统) 核心架构
linux·c++·单片机·嵌入式硬件·架构
踩坑记录14 小时前
leetcode hot100 160.相交链表 easy 链表双指针
leetcode