根据题意的话就是在非0的地方开始寻找上下左右分别能够走到的最大步长的。

那么使用暴力的方法竟然leetcode还是给过了。

class Solution {
public:
int orderOfLargestPlusSign(int N, vector<vector<int>>& mines) {
int res=;
vector<vector<int>> vis(N, vector<int>(N,));
for(int i=;i<mines.size();i++){
vis[mines[i][]][mines[i][]]=;
}
for(int i=;i<N;i++){
for(int j=;j<N;j++){
if(vis[i][j]){
int step=;
while(judge(vis,N,i,j,step)) step++;
res=max(res,step);
}
}
}
return res;
}
bool judge(vector<vector<int>>&vis,int N, int i,int j, int step){
if(i-step<||i+step>=N||j-step<||j+step>=N) return false;
return vis[i-step][j] &&vis[i+step][j]&&vis[i][j-step]&&vis[i][j+step];
}
};

在这里会发现存在大量的计算冗余的,考虑使用dp的动态规划,利用dp[i][j]来标记在方向上能够移动的最长距离的。

简化算法参考:http://www.cnblogs.com/grandyang/p/8679286.html

向左移动: [i][j]: j在内层循环,从小到大;

向右移动: [i][j]: j在内层循环,从大到小;

向下移动: [i][j]: i在内层循环,从小到大;

向上移动: [i][j]: i在内层循环,从大到小;

class Solution {
public:
int orderOfLargestPlusSign(int N, vector<vector<int>>& mines) {
int res=;
vector<vector<int>> dp(N, vector<int>(N,N));
for(int i=;i<mines.size();i++){
dp[mines[i][]][mines[i][]]=;
}
for(int i=;i<N;i++){
int l=,r=,u=,d=;
for(int j=,k=N-; j<N,k>=; j++,k--){
dp[i][j]=min(dp[i][j], l=(dp[i][j]==)?:l+); // left方向
dp[i][k]=min(dp[i][k], r=(dp[i][k]==)?:r+); // right方向
dp[j][i]=min(dp[j][i], d=(dp[j][i]==)?:d+); // down方向
dp[k][i]=min(dp[k][i], u=(dp[k][i]==)?:u+); // up方向
}
}
for(int i=;i<N*N;i++) res=max(res, dp[i/N][i%N]);
return res;
}
};

leetcode 764.Largest Plus Sign的更多相关文章

  1. 【LeetCode】764. Largest Plus Sign 解题报告(Python)

    [LeetCode]764. Largest Plus Sign 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn ...

  2. 764. Largest Plus Sign最大的dfs十字架

    [抄题]: 求挖掉一些区域后,能允许出现的最大十字架 In a 2D grid from (0, 0) to (N-1, N-1), every cell contains a 1, except t ...

  3. 【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 ...

  4. 764. Largest Plus Sign

    题目大意: 就是一个由1和0组成的正方形矩阵,求里面最大的加号的大小,这个大小就是长度. 什么鬼啊,本来想自己想的,结果看了半天没看懂具体什么意思,然后查了下题解,希望有人说一下意思,结果一上来就是思 ...

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

  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 84. Largest Rectangle in Histogram 单调栈应用

    LeetCode 84. Largest Rectangle in Histogram 单调栈应用 leetcode+ 循环数组,求右边第一个大的数字 求一个数组中右边第一个比他大的数(单调栈 Lee ...

  8. 【LeetCode】Largest Number 解题报告

    [LeetCode]Largest Number 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/largest-number/# ...

  9. [LeetCode] Kth Largest Element in an Array 数组中第k大的数字

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...

随机推荐

  1. PS笔刷的使用

    直接进入正文了! 第一步 打开你的ps,至少是CS6哦,没有安装包的可以去网上找,或者找我0.0. 第二步 将面板改为绘画功能. 第三步打开“窗口”调出“画笔”“画笔预设”“图层”等面板,“颜色”面板 ...

  2. html5 的存储

    html5提供了很多存储的功能,诸如localStorage,sessionStorage,indexedDB,还有离线缓存等,本次主要介绍离线缓存跟本地存储. 离线缓存  使用离线存储可以缓存部分文 ...

  3. JAVA实现简单的四则运算

    GitHub 项目地址 https://github.com/745421831/-/tree/master PSP PSP2.1 Personal Software Process Stages 预 ...

  4. yield的表达式形式与内置函数

    yield的功能: 1. 与return类似,都可以返回值,不一样在于,yield可以返回多个值而且可暂停,再次执行可继续下一步操作,return到了就停止不在继续运行. 2.为封装好的的函数能够使用 ...

  5. Promise 错误处理

    Promise 是一个异步返回单个结果的函数或方法 不使用  `catch()` 时,在  `success handler` 里的错误无法被捕捉到 使用  `catch()` 时,在  `succe ...

  6. 记初学python的一些心得

    人生苦短,我用python! 其实我自学python也很长一段时间了,但总是去更换学习资料,搞的现在学的不是很好,因为没更换次资料都要从头开始学起,那么分享下我的学习战况吧,不是很好,还将就的能看. ...

  7. Python 的第一个小程序

    F盘   新建文本文档 hello.txt 内容为: print("hello world! hello 2018!"); 打开CMD cd c:\                 ...

  8. Windows操作系统下搭建Git服务器和客户端。

    本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...

  9. C++ Coroutine简明教程

    在C++里,一个函数如果其函数体实现中包含co_await.co_yield.co_return中任何一个关键字,那么这个函数就是一个coroutine.其中: co_await:挂起当前的corou ...

  10. pseudo-class与pseudo-element的不同点与相同点

    关于两者的区别,其实是很古老的问题.但是时至今日,由于各种网络误传以及一些不负责任的书籍误笔,仍然有相当多的人将伪类与伪元素混为一谈,甚至不乏很多CSS老手.早些年刚入行的时候,我自己也被深深误导,因 ...