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)的更多相关文章

  1. C#版 - Leetcode 593. 有效的正方形 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...

  2. LeetCode——single-number系列

    LeetCode--single-number系列 Question 1 Given an array of integers, every element appears twice except ...

  3. Leetcode算法系列(链表)之删除链表倒数第N个节点

    Leetcode算法系列(链表)之删除链表倒数第N个节点 难度:中等给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点.示例:给定一个链表: 1->2->3->4-&g ...

  4. Leetcode算法系列(链表)之两数相加

    Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将 ...

  5. Java实现 LeetCode 764 最大加号标志(暴力递推)

    764. 最大加号标志 在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1.网格中包含 1 的最大的轴对齐加号 ...

  6. [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 ...

  7. [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 ...

  8. [LeetCode] Valid Square 验证正方形

    Given the coordinates of four points in 2D space, return whether the four points could construct a s ...

  9. [Leetcode] Sum 系列

    Sum 系列题解 Two Sum题解 题目来源:https://leetcode.com/problems/two-sum/description/ Description Given an arra ...

随机推荐

  1. 微信小程序性能优化技巧

    摘要: 如果小程序不够快,还要它干嘛? 原文:微信小程序性能优化方案--让你的小程序如此丝滑 作者:杜俊成要好好学习 Fundebug经授权转载,版权归原作者所有. 微信小程序如果想要优化性能,有关键 ...

  2. 【linux】如何开放防火墙端口

    linux默认大部分端口的是关闭的.而我们在开发.部署环境时,需要用到大量的服务,如mysql.tomcat.redis.zk等,需要开放指定的端口号. 以mysql端口3306为例 首先编辑服务器的 ...

  3. vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)

    一.自定义指令directive 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的 ...

  4. Redis 开启远程连接

    默认 bind 127.0.0.1 即绑定本机 IP,只能本机访问,你也可以绑定别的 IP 地址,如果注释掉,表示不限制 IP,所有 IP 都能访问 # ~~~ WARNING ~~~ If the ...

  5. HTML5 & CSS3初学者指南(4) – Canvas使用

    介绍 传统的HTML主要用于文本的创建,可以通过<img>标签插入图像,动画的实现则需要第三方插件.在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力.HTML5的到来,带来了新 ...

  6. 聊天ListView

    我们知道,在微信或者QQ聊天的时候,会出现至少两种布局,即收到的消息和自己发送的消息,这种效果可以用listView来实现.类似于下面这样的界面. 主要在Adapter的getView()里面下笔. ...

  7. 自定义控件:Flag标签

    效果图: 只有一个自定义textview.源码很简单,可以阅读下. GitHub

  8. Chrome Inspect不显示Webview页面的问题总结

    首先,确保手机打开了USB调试.如果还是检测不到WebView页面,主要有以下几种情况. 1.反应慢,稍等一会 2.关闭然后重新打开USB调试开关,刺激一下chrome,我的魅族手机有时需要这样操作一 ...

  9. springboot 学习之路 7(静态页面自动生效问题)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  10. elasticsearch及head插件安装与配置

    1. 环境软件版本说明 系统:ubuntu14.04.1 JDK:1.8 elasticsearch:5.5.2 node:9.11.1 elasticsearch:5.X 2. 环境软件下载说明 1 ...