美文网首页
最大正方形

最大正方形

作者: 二进制的二哈 | 来源:发表于2019-12-26 15:00 被阅读0次

简书来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/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

动态规划解法:

class Solution {

    class Node{
        int x;
        int y;
        int area;
    }

    public int maximalSquare(char[][] matrix) {
        if(matrix.length == 0)
            return 0;
        Node[][] dp = new Node[matrix.length][matrix[0].length];
        int ans = 0;
        for(int i=0;i<matrix.length;i++){
            for(int j=0;j<matrix[0].length;j++){
                Node node = new Node();
                if(matrix[i][j] == '1'){
                    node.x = j==0?1:dp[i][j-1].x+1;
                    node.y = i==0?1:dp[i-1][j].y+1;
                    if(i == 0||j==0){
                        node.area = 1;
                    }else{
                        //左上角
                        Node tmpNode = dp[i-1][j-1];
                        if(tmpNode.area == 0){
                            node.area = 1;
                        }else{
                            //左上角面积大于0
                            //左上角正方形的宽度
                            int width = (int)Math.sqrt(tmpNode.area);
                            if(node.x > width && node.y > width){
                                //当前节点的长宽大于左上角
                                node.area = (width+1)*(width+1);
                            }else{
                                //找出短的一条边
                                int min = Math.min(node.x,node.y);
                                node.area = min*min; 
                            }
                        }
                    }
                }
                dp[i][j] = node;
                ans = Math.max(ans,node.area);
            }
        }
        return ans;
    }
}

相关文章

  • 最大正方形

    在一个二维01矩阵中找到全为1的最大正方形您在真实的面试中是否遇到过这个题?Yes样例1 0 1 0 01 0 1...

  • 最大正方形

    题目描述 https://leetcode-cn.com/problems/maximal-square/ 解 思...

  • 最大正方形

    标签:动态规划 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例: 输入...

  • 最大正方形

    题目: 题目的理解: 找到1,则进行判断正方形的一圈是否都是1. 然后记录面积。 python实现 想看最优解法移...

  • 最大正方形

    https://leetcode-cn.com/explore/interview/card/bytedance/...

  • 最大正方形

    简书来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maxi...

  • 最大正方形

    题目描述:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例:输入:1 0...

  • 最大正方形

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

  • 圆形与正方面积比值相关比值相关规律

    1、在正方形内画最大圆,正方形的面积与圆的面积比值是1:0.785。 因为正方形面积=边长X边长,,圆面积=πr²...

  • [Leetcode] 221. 最大正方形

    221. 最大正方形 来源: 221. 最大正方形 1. 题目描述 在一个由 0 和 1 组成的二维矩阵内,找到...

网友评论

      本文标题:最大正方形

      本文链接:https://www.haomeiwen.com/subject/vszkoctx.html