力扣_动态规划4—最大正方形

news/2024/9/20 6:44:24

题目

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵 m a t r i x matrix matrix 内,找到只包含 ‘1’ 的最大正方形,并返回其面积。

方法

  • 创建二维 d p dp dp 数组, d p [ i ] [ j ] dp[i][j] dp[i][j] 表示 ( i , j ) (i,j) (i,j) 为右下角时正方形的最大边长
  • m a t r i x [ i ] [ j ] = = 1 matrix[i][j]==1 matrix[i][j]==1 d p [ i ] [ j ] = m i n ( d p [ i − 1 ] [ j ] , d p [ i ] [ j − 1 ] , d p [ i − 1 ] [ j − 1 ] ) + 1 dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])+1 dp[i][j]=min(dp[i1][j],dp[i][j1],dp[i1][j1])+1
  • m a t r i x [ i ] [ j ] = = 0 matrix[i][j]==0 matrix[i][j]==0 d p [ i ] [ j ] = 0 dp[i][j] = 0 dp[i][j]=0

代码

class Solution {
public:
    int maximalSquare(vector<vector<char>>& matrix) {
        int n = matrix.size();
        int m = matrix[0].size();
        vector<vector<int>> dp(n, vector<int>(m));
        int max_len = 0;
        for(int i = 0; i < n; i++){
            for(int j = 0; j < m; j++){
                if(i == 0 || j == 0){
                    dp[i][j] = int(matrix[i][j] - '0');
                }
                else{
                    if(matrix[i][j] == '1')
                        dp[i][j] = min(dp[i-1][j], min(dp[i][j-1], dp[i-1][j-1])) + 1;
                    else
                        dp[i][j] = 0;
                }
                max_len = max(max_len, dp[i][j]);
            }
        }
        return max_len*max_len;
    }
};

http://lihuaxi.xjx100.cn/news/2108833.html

相关文章

深入浅出前端本地储存

引言 2021 年&#xff0c;如果你的前端应用&#xff0c;需要在浏览器上保存数据&#xff0c;有三个主流方案&#xff1a; CookieWeb Storage (LocalStorage)IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史…

linux 命令笔记:gpustat

1 命令介绍 gpustat是一个基于Python的命令行工具&#xff0c;它提供了一种快速、简洁的方式来查看GPU的状态和使用情况它是nvidia-smi工具的一个封装&#xff0c;旨在以更友好和易于阅读的格式显示GPU信息。gpustat不仅显示基本的GPU状态&#xff08;如温度、GPU利用率和内存…

Python爬虫获取接口数据

Python爬虫获取接口数据 正常人的操作​​​​​​​​​​爬虫的思路标题获取请求信息标题请求转换为代码完整代码请求返回信息执行程序获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获…

查询优化-EXIST类型子连接提升

瀚高数据库 目录 文档用途 详细信息 文档用途 了解exist类型的子连接提升过程 详细信息 SQL: SELECT sno FROM STUDENT WHERE EXISTS (SELECT sno FROM score WHERE sno > STUDENT.sno);一、执行计划&#xff1a; test# explain SELECT sno FROM STUDENT WHERE EXISTS (…

代码随想录算法训练营第58天 | 392.判断子序列 , 115.不同的子序列

单调栈章节理论基础&#xff1a; https://leetcode.cn/problems/daily-temperatures/ 739. 每日温度 题目链接&#xff1a;https://leetcode.cn/problems/daily-temperatures/ 思路&#xff1a; 首先想到的当然是暴力解法&#xff0c;两层for循环&#xff0c;把至少需要等…

2024最新华为OD机试试题库全 -【执行时长】- C卷

1. 🌈题目详情 1.1 ⚠️题目 为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。 假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成。…

Linux网络编程: TCP协议之序号和确认号详解

一、TCP协议首部 二、序号&#xff08;Sequence Number&#xff09; 32位&#xff0c;表示该报文段所发送数据的第一个字节的编号。 实际上 TCP 的序号并不是按照 “一条两条” 这样的方式来编号的。在TCP连接中所传输字节流的每一个字节都会按顺序编号&#xff0c;由于序列号…

产品经理面试如何自我介绍?

金三银四求职季&#xff0c;你是不是也有面试的冲动&#xff01;但面试并不是头脑一热就能取得好结果&#xff0c;在此之前&#xff0c;必须得有周全的准备&#xff0c;才能应对好面试官的“连环问”&#xff01; 所以&#xff0c;今天这篇产品经理面试干货文章&#xff0c;别…