leetcode764 Largest Plus Sign
思路:
首先使用dp计算出在每个位置(i, j)上下左右最多有多少个连续的1,得到up[i][j], down[i][j], left[i][j], right[i][j]。然后计算这四个值中的最小值,所有最小值中的最大值就是答案。
实现:
class Solution
{
public:
int orderOfLargestPlusSign(int N, vector<vector<int>>& mines)
{
vector<vector<int>> left(N, vector<int>(N, )), right(N, vector<int>(N, ));
vector<vector<int>> up(N, vector<int>(N, )), down(N, vector<int>(N, ));
vector<vector<int>> a(N, vector<int>(N, ));
for (int i = ; i < mines.size(); i++)
a[mines[i][]][mines[i][]] = ;
for (int i = ; i < N; i++)
{
left[i][] = (a[i][] == ? : );
right[i][N - ] = (a[i][N - ] == ? : );
for (int j = ; j < N; j++)
{
left[i][j] = a[i][j] == ? : left[i][j - ] + ;
right[i][N - - j] = a[i][N - - j] == ? : right[i][N - j] + ;
}
}
for (int j = ; j < N; j++)
{
up[][j] = (a[][j] == ? : );
down[N - ][j] = (a[N - ][j] == ? : );
for (int i = ; i < N; i++)
{
up[i][j] = a[i][j] == ? : up[i - ][j] + ;
down[N - - i][j] = a[N - - i][j] == ? : down[N - i][j] + ;
}
}
int maxn = ;
for (int i = ; i < N; i++)
{
for (int j = ; j < N; j++)
{
int tmp = min(min(min(up[i][j], down[i][j]), left[i][j]), right[i][j]);
maxn = max(maxn, tmp);
}
}
return maxn;
}
};
leetcode764 Largest Plus Sign的更多相关文章
- [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] 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 ...
- 764. Largest Plus Sign最大的dfs十字架
[抄题]: 求挖掉一些区域后,能允许出现的最大十字架 In a 2D grid from (0, 0) to (N-1, N-1), every cell contains a 1, except t ...
- 【leetcode】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 giv ...
- 【LeetCode】764. Largest Plus Sign 解题报告(Python)
[LeetCode]764. Largest Plus Sign 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn ...
- leetcode 764.Largest Plus Sign
根据题意的话就是在非0的地方开始寻找上下左右分别能够走到的最大步长的. 那么使用暴力的方法竟然leetcode还是给过了. class Solution { public: int orderOfLa ...
- 764. Largest Plus Sign
题目大意: 就是一个由1和0组成的正方形矩阵,求里面最大的加号的大小,这个大小就是长度. 什么鬼啊,本来想自己想的,结果看了半天没看懂具体什么意思,然后查了下题解,希望有人说一下意思,结果一上来就是思 ...
- [LeetCode] Minimum Window Subsequence 最小窗口序列
Given strings S and T, find the minimum (contiguous) substring W of S, so that T is a subsequence of ...
- Swift LeetCode 目录 | Catalog
请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift 说明:题目中含有$符号则为付费题目. 如 ...
随机推荐
- quick-cocos2d-x教程10:实现血条效果。
血条是常见功能.能够通过一个血条背景和一个不断改变的血条宽度.来实现少血. 在MainScence.lua中,先改代码: function MainScene:ctor() local bg ...
- iOS 配置支付宝
尽管非常easy,可是对于第一次接触支付宝配置的啊猿.有些细节摸不着头脑.今天就来写一个流程配置. 1.创建一个project,然后再创建一个目录,把支付宝sdk要用到的都拖到目录中.然后拖到proj ...
- ASP.NET MVC 原理
我出了份卷子做面试题,其中之一就是要求说说ASP.NET MVC的原理.感觉太空泛了,谁能说得准呢? 但是,如果站在我这个面试官立场,面试题好多时并不要求有标准答案,可能也没有什么标准答案,主要是通过 ...
- Android-support-v4源码查看
- POI异步导入Excel兼容xsl和xlsx
项目架构:spring+struts2+hibernate4+oracle 需求:用户导入excel文件,导入到相应的数据表中,要求提供导入模板,支持xls和xlsx文件 思路分析: 1.提供一个下载 ...
- Statement 与 PreparedStatement 区别
Statement由方法createStatement()创建,该对象用于发送简单的SQL语句 PreparedStatement由方法prepareStatement()创建,该对象用于发送带有一个 ...
- 三.OC基础--1.NSString的创建和使用,2多文件开发,3类方法,4封装
三:OC--1.NSString的创建和使用, 1,创建常量字符串,注意使用“@“符号. NSString *astring = @"This is a String!"; //后 ...
- BZOJ3282:Tree(TCL基础题)
给定N个点以及每个点的权值,要你处理接下来的M个操作. 操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和. 保证x到y是联通的. ...
- Activity快速入门理解
在Java领域,JBPM和Activity是两个主流的工作流系统,而Activity的出现无疑将会取代JBPM(Activity的开发者就是从Jbpm开发者出来的 1. 1个插件 在Eclipse ...
- Asp.net Mvc 数据库上下文初始化器
在Asp.net Mvc 和Entity FrameWork程序中,如果数据库不存在,EF默认的行为是新建一个数据库.如果模型类与已有的数据库不匹配的时候,会抛出一个异常. 通过指定数据库上下文对象初 ...