zoukankan      html  css  js  c++  java
  • LeetCode 221. 最大正方形(Maximal Square)

    题目描述

    在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。

    示例:

    输入: 
    
    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0
    
    输出: 4

    解题思路

    动态规划思想,从左上依次遍历到右下,记录以当前位置为右下角顶点的最大正方形的边长,对每个位置作如下操作:

    • 若该位置为0,直接跳过
    • 若该位置为1,则分为两种情况:
      • 若其为左边界或上边界,则更新最大边长为当前数字;
      • 否则检查其紧邻左方、紧邻上方和左上角对应的数字,取他们的最小值再加1即为以当前位置为右下角顶点的正方形边长,并更新此时的最大正方形边长

    代码

     1 class Solution {
     2 public:
     3     int maximalSquare(vector<vector<char>>& matrix) {
     4         int maxN = 0;
     5         for(int i = 0; i < matrix.size(); i++){
     6             for(int j = 0; j < matrix[0].size(); j++){
     7                 if(matrix[i][j] == '0') continue;
     8                 if(j == 0 || i == 0){
     9                     if(matrix[i][j] - '0' > maxN) maxN = matrix[i][j] - '0';
    10                 }
    11                 else if(matrix[i - 1][j - 1] > '0'){
    12                     char x = min(matrix[i - 1][j - 1], matrix[i - 1][j]);
    13                     x = min(x, matrix[i][j - 1]);
    14                     matrix[i][j] = x + 1;
    15                     if(matrix[i][j] - '0' > maxN) maxN = matrix[i][j] - '0';
    16                 }
    17             }
    18         }
    19         return maxN * maxN;
    20     }
    21 };
  • 相关阅读:
    lrzsz on linux
    ASP.Net Core 运行在Linux(CentOS)
    ASP.Net Core 运行在Linux(Ubuntu)
    .Net程序跑在Linux上
    通过GitHub部署网站到Azure WebSite
    kubernetes报错
    第4篇创建harbor私有镜像库
    第1篇Kubernetes介绍
    第2篇Kubernetes架构
    第3篇K8S集群部署
  • 原文地址:https://www.cnblogs.com/wmx24/p/9854888.html
Copyright © 2011-2022 走看看