[LeetCode]最大系列(最大正方形221,最大加号标志764)
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] = min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1
举个例子
1 | 0 | 1 | 0 | 0 |
---|---|---|---|---|
1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 2 | 2 |
1 | 0 | 0 | 1 | 0 |
代码:
class Solution(object):
def maximalSquare(self, matrix):
"""
:type matrix: List[List[str]]
:rtype: int
"""
row = len(matrix)
col = len(matrix[0])
res = [[0] * col for _ in range(row)]
print(res)
max_len = 0
for i in range(row):
for j in range(col):
if i == 0:
res[0][j] = int(matrix[0][j])
elif j == 0:
res[i][0] = int(matrix[i][0])
elif matrix[i][j] == "1":
res[i][j] = min(res[i - 1][j], res[i][j - 1], res[i - 1][j - 1]) + 1
max_len = max(max_len, res[i][j])
return max_len * max_len
764. 最大加号标志
题目描述:
在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid
中,除了在 mines
中给出的单元为 0
,其他每个单元都是 1
。网格中包含 1
的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。
一个 k" 阶由 1 组成的“轴对称”加号标志具有中心网格 grid[x][y] = 1
,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1
,由 1
组成的臂。下面给出 k" 阶“轴对称”加号标志的示例。注意,只有加号标志的所有网格要求为 1,别的网格可能为 0 也可能为 1。
示例:
输入: N = 5, mines = [[4, 2]]
输出: 2
解释:
11111
11111
11111
11111
11011
在上面的网格中,最大加号标志的阶只能是2。一个标志已在图中标出。
思路:
动态规划
先有一个例子,描述动态规划的过程
例如:N = 3, mines = [[1,1]]
那么,就可以得到这样的grid
创建这样二维数组[[3,3,3],[3,0,3],[3,3,3]]
我们0行然后每列用十字架样式进行遍历,从左上角到右下角遍历,具体操作看代码:
我们首先看第0行第0列,进行操作变成:[[1,2,1],[2,0,3].[1,3,3]]
依次类推:
最后变成:[[1,1,1],[1,0,1],[1,1,1]]
代码:
class Solution:
def orderOfLargestPlusSign(self, N: int, mines: List[List[int]]) -> int:
dp = [[N] * N for _ in range(N)]
for x, y in mines:
dp[x][y] = 0
# print(dp)
for i in range(N):
left = 0
right = 0
up = 0
down = 0
for j, k in zip(range(N), range(N - 1, -1, -1)):
left = left + 1 if dp[i][j] != 0 else 0
right = right + 1 if dp[i][k] != 0 else 0
up = up + 1 if dp[j][i] != 0 else 0
down = down + 1 if dp[k][i] != 0 else 0
dp[i][j] = min(dp[i][j], left)
dp[i][k] = min(dp[i][k], right)
dp[j][i] = min(dp[j][i], up)
dp[k][i] = min(dp[k][i], down)
res = 0
for i in range(N):
for j in range(N):
res = max(res, dp[i][j])
return res
[LeetCode]最大系列(最大正方形221,最大加号标志764)的更多相关文章
- C#版 - Leetcode 593. 有效的正方形 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- LeetCode——single-number系列
LeetCode--single-number系列 Question 1 Given an array of integers, every element appears twice except ...
- Leetcode算法系列(链表)之删除链表倒数第N个节点
Leetcode算法系列(链表)之删除链表倒数第N个节点 难度:中等给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点.示例:给定一个链表: 1->2->3->4-&g ...
- Leetcode算法系列(链表)之两数相加
Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将 ...
- Java实现 LeetCode 764 最大加号标志(暴力递推)
764. 最大加号标志 在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1.网格中包含 1 的最大的轴对齐加号 ...
- [Swift]LeetCode764. 最大加号标志 | Largest Plus Sign
In a 2D grid from (0, 0) to (N-1, N-1), every cell contains a 1, except those cells in the given lis ...
- [LeetCode] Maximal Square 最大正方形
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ret ...
- [LeetCode] Valid Square 验证正方形
Given the coordinates of four points in 2D space, return whether the four points could construct a s ...
- [Leetcode] Sum 系列
Sum 系列题解 Two Sum题解 题目来源:https://leetcode.com/problems/two-sum/description/ Description Given an arra ...
随机推荐
- 51单片机:IO口扩展芯片用法(74HC165,74HC595)
IO口扩展芯片,主要是解决单片机IO口太少. 74HC165:数据从并转串 74HC595:数据从串转并 两种芯片,都是通过时序电路,加上移位功能,进行数据传输 74HC165:数据从并转串.以下实例 ...
- Nginx之OCSP stapling配置
摘要: 正确地配置OCSP stapling, 可以提高HTTPS性能. 什么是OCSP stapling? OCSP的全称是Online Certificate Status Protocol,即在 ...
- springboot之单元测试
springboot在写完之后,肯定都需要进行单元测试,如下给出一些样例 工程层次结构如图 代码如下: controller: package com.rookie.bigdata.controlle ...
- angular $index获取ng-repeat的上一条数据
<div ng-repeat="item in dataList" ng-click="func($index,$index-1)"></di ...
- ionic 兼容title居中显示和tab栏在显示底部
在app.js里的 .config 里添加配置,同时在函数中引入 $ionicConfigProvider,具体格式如下所示: .config(function($stateProvider, $ur ...
- django rest framework 项目创建
Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Rest Framework Django REST Framework可以在Django的基 ...
- Spring集成ElasticSearch搜索引擎
目录 前期安装 Maven支持库安装 添加log4j的配置文件 创建Client客户端 实现增删改查以及符合查询 实现查询数据 实现添加数据 实现删除数据 实现修改数据 实现复合查询数据 Elasti ...
- 使用nginx代理后以及配置https后,如何获取真实的ip地址
使用nginx代理后以及配置https后,如何获取真实的ip地址 Date:2018-8-27 14:15:51 使用nginx, apache等反向代理后,如果想获取请求的真实ip,要在nginx中 ...
- oracle测试环境表空间清理
测试场景下,使用的oralce遇到表空间的占用超大,可以采用如下的方式进行空间的清理 首先使用sqlplus连接数据库sqlplus sys/password@orcl as sysdba 之类进行数 ...
- [20190226]测试使用bbed恢复索引.txt
[20190226]测试使用bbed恢复索引.txt --//上午做tab$删除恢复测试时发现,tab$的索引i_tab1很小.可以尝试使用bbed解决这个问题.--//首先在普通表上做一个测试看看. ...