• leetcode刷题笔记 221题 最大正方形


    leetcode刷题笔记 221题 最大正方形

    源地址:221. 最大正方形

    问题描述:

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

    示例:

    输入:

    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0

    输出: 4

    //基于动态规划思想处理, dp(i)(j)表示以i、j为右下节点的正方形的最大边长
    //初始状态 
    //if (i == 0 || j ==0)情况下
    //if (matrix(i)(j) == 1) dp(i)(j) = 1
    //else dp(i)(j) = 0
    //状态转移方程
    //if (matrix(i)(j) == 1) dp(i)(j) = math.min(math.min(dp(i-1)(j), dp(i)(j-1)), dp(i-1)(j-1))+1
    //else dp(i)(j) = 0
    object Solution {
        def maximalSquare(matrix: Array[Array[Char]]): Int = {
            if (matrix.length == 0 || matrix(0).length == 0) return 0
            
            var maxSide = 0
            val rowLength = matrix.length
            val colLength = matrix(0).length
            val dp = Array.ofDim[Int](rowLength,colLength)
            
            for (i <- 0 to rowLength - 1) {
                for (j <- 0 to colLength - 1){
                    if (matrix(i)(j) == '1') {
                        if (i == 0 || j == 0) dp(i)(j) = 1
                        else dp(i)(j) = Math.min(Math.min(dp(i-1)(j-1), dp(i)(j-1)), dp(i-1)(j)) + 1
                    }
                    maxSide = Math.max(maxSide, dp(i)(j))
                }
            }
            
            return maxSide * maxSide
        }
    }
    
  • 相关阅读:
    4.文本规范化处理
    2.自动文本分类
    3.文本分类的蓝图
    1.什么是文本分类
    2.文本规范化
    Python 处理和理解文本
    1.文本切分
    验证码识别
    随机函数
    Java编程思想笔记(多态)
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13776740.html
Copyright © 2020-2023  润新知