首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

☆打卡算法☆LeetCode 221. 最大正方形 算法解析

一、题目 1、算法题目 “在0和1组成的矩阵中找到只包含1的最大正方形,返回其面积。” 题目链接: 来源:力扣(LeetCode) 链接: 221....最大正方形 - 力扣(LeetCode) 2、题目描述 在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。..."0","1","0"]] 输出:4 示例 2: 输入: matrix = [["0","1"],["1","0"]] 输出: 1 二、解题 1、思路分析 题意要在0和1组成的二维矩阵中找到只包含1的最大正方形...由于正方形的面积等于边长的平方,因此要找到最大正方形的面积,就需要找到最大正方形的边长,然后计算最大边长的平方即可。 具体的,就是遍历矩阵中的每个元素,遇到1,则将钙元素作为正方形的左上角。...确定左上角后,根据左上角的行和列计算可能的正方形的边长,在行数和列数的范围内找出只包含1的最大正方形。 每次右或下新增一行,判断新增的行和列是否满足所有元素都是1。

31720

最大正方形(leetcode 221)

4.解题思路 4.1 暴力法 4.1.1 思路 暴力求解思想非常朴素: 遍历矩阵,遇到 1 则作为最大正方形的左上角; 根据左上角所在的行和列计算可能的最大正方形; 在可能的最大正方形内,每次循环在下方一行和右方一列验证是否所有元素都是...我们用 dp(i, j) 表示以 (i, j) 为右下角,且只包含 1 的正方形的边长最大值。如果我们能计算出所有 dp(i,j) 的值,那么其中的最大值的平方即为题解。...遍历完矩阵便可求出全为 1 的最大正方形面积。 空间复杂度 O(mn),其中 m 和 n 是矩阵的行数和列数。因为要记录每一个位置的最大正方形边长,所以需要 mn 个额外空间。...5.1 C++ #include // maximalSquare 最大正方形面积。...最大正方形 - leetcode

1.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

力扣221——最大正方形

原题 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。...假设我们用一个二维数组dp,记录每一个位置所能构成的最大正方形的边长(从左上角开始算)。...位置(i, j)是 1,则其可能构成的正方形的边长是Min(dp(i - 1, j - 1), dp(i - 1, j), dp(i, j - 1)) + 1。...看到这个,相信你也会理解了,每一个位置所能构成的最大边长的条件,其实是要求包围着它的左上角三个位置都是 1 才可以。 一直递推回到最初点,也就意味着,第一行和第一列需要单独判断。...其实我们发现,当一个位置用过之后,这个位置本身的数字已经不再重要,关键是该位置所能构成的最大正方形的边长,也就是我们记录的中间结果。因此可以直接更新原数组上的数字。

52310

LeetCode-221-最大正方形

# LeetCode-221-最大正方形 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。...; 确定正方形的左上角后,根据左上角所在的行和列计算可能的最大正方形的边长(正方形的范围不能超出矩阵的行数和列数),在该边长范围内寻找只包含 1 的最大正方形; 每次在下方新增一行以及在右方新增一列,判断新增的行和列是否满足所有元素都是...方法2、动态规划: 状态dp[i][j]表示以第i行第j列为右下角所能构成的最大正方形边长 则当i==0或者j==0,最大正方形边长始终为1,则dp[i][j]=1 右下角的正方形最大边长,最多比它的上方...maxSide = Math.max(maxSide, 1); // 计算可能的最大正方形边长...int currentMaxSide = Math.min(rows - i, columns - j); // 遍历可能的最大正方形内的每个元素

23910

详解 leetcode 221 题:最大正方形

学好算法没有捷径,最好的捷径就是多刷题,并且跳出舒适区,每道题都要寻找最优解,也不能老是做那些你自己比较擅长的题,不定期更新 Leetcode 的题,每道题都会给出多种解法以及最优解 题目描述 在一个由...0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。...搜索的过程中,用一个变量来记录最大正方形的面积。接着用(0,1)作为左上角,不断着向右下角搜索 ? 当然,(0,1)这个位置本身就是 0 ,所以是没有搜索的必要的,我这里只是做个演示。...1、首先我们定义 dp[i][j] 含义为正方形以 dp[i][j] 作为右下角时的最大边长值。...时间复杂度:O(n*m) 空间复杂度:O(n) 额外话 动态规划是一个比较难的算法思想,特别是对于初学者,遇到动态规划的题基本凉,我刚开始也被搞过,后来能看懂关于动态规划的答案,但是自己写不出,一气之下做了几十道动态规划的题

89050

二维动态规划——最大正方形最大长方形

最大正方形问题 题目:https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/3/DPL_3_A 现有HxW个边长为1的瓷砖拼在一起,其中一部分瓷砖有污迹...,求仅由干净瓷砖构成的最大正方形的面积。...0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 Sample Output 4 这题可以通过dp来解决,用数组dp[i][j]来表示以顶点(i,j)向左上角扩展,得到的最大正方形的边长...最大长方形问题和上面的一题类似,只是要求最大的干净的长方形的面积。...如果栈为空 将rect压入栈 如果栈顶长方形高度<=rect的高 将rect压入栈 如果栈顶长方形的高大于rect的高 只要栈不为空,且栈顶长方形的高>=rect的高,就从栈中取出长方形,同时计算其面积并更新最大

21420
领券