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

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

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

转载于:https://www.cnblogs.com/newnoobbird/p/9635304.html

leetcode 764.Largest Plus Sign相关推荐

  1. Leetcode 764. Largest Plus Sign

    思路:动态规划.对于第i行第j列的元素grid[i][j]表示的是这个元素的plus sign的等级,初始化不在mines中的元素对应的grid值为较大值(只要大于N/2即可),在mines中的元素对 ...

  2. leetcode 764. Largest Plus Sign | 764. 最大加号标志(Java)

    题目 https://leetcode.com/problems/largest-plus-sign/ 题解 class Solution {public int orderOfLargestPlus ...

  3. LeetCode——Kth Largest Element in an Array

    LeetCode--Kth Largest Element in an Array Question Find the kth largest element in an unsorted array ...

  4. LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字

    2019独角兽企业重金招聘Python工程师标准>>> 1.题目名称 Largest Number(求整型数组中各元素可拼合成的最大数字) 2.题目地址 https://leetco ...

  5. LeetCode 84. Largest Rectangle in Histogram

    LeetCode 84. Largest Rectangle in Histogram Solution1:我的答案 循环里头套了一个动态规划,缺点是当heights个数或最大高度多高时会很耗时间!! ...

  6. 【回文串10】LeetCode 479. Largest Palindrome Product

    LeetCode 479. Largest Palindrome Product 本博客转载自:http://www.cnblogs.com/grandyang/p/7644725.html Solu ...

  7. [LeetCode]179. Largest Number

    [LeetCode]179. Largest Number 题目描述 解题思路 求最大的数,在数组中对于每一位数字数值越大应当越靠前,如:9 > 5,所以9应该在5之前 需要考虑的是对于不同位数 ...

  8. Leetcode 179 Largest Number

    Leetcode 179 Largest Number 题目 思路 代码 优化 题目 Given a list of non negative integers, arrange them such ...

  9. [LeetCode] Find Largest Value in Each Tree Row 找树每行最大的结点值

    You need to find the largest value in each row of a binary tree. Example: Input: 1/ \3 2/ \ \ 5 3 9 ...

最新文章

  1. 数据结构之图的应用:有向无环图
  2. 世界上第一位程序员,竟然是诗人拜伦的女儿?
  3. “编程能力差,90%会输在这点上!”谷歌开发:方法不对,努力也白费
  4. QQ浏览器、搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie、Session失效问题
  5. 图片加载库之Glide和Picasso对比
  6. ad敷铜后还有部分飞线_眼花缭乱!超级无敌的飞线大法,打造一把超低功耗无线机械键盘...
  7. Hessian矩阵(黑塞矩阵)
  8. SQL Server 2012 安装图解教程(附sql2012下载地址)
  9. webpack源码解析系列(一)
  10. APP设计:(一)app界面常用设计规范
  11. 蓝牙芯片----BK3431开发笔记------RW stack中添加自定义服务教程(4)
  12. c#基础知识学习——枚举、元组(四)
  13. 【python】调用百度智能云API实现手写文字识别
  14. 计算机二级考试python+C语言通过记录
  15. 计算机辅助绘图 选修,计算机辅助绘图(CAD)教学大纲.doc
  16. 百度传课-php2小时超音速入门
  17. Android 控件 RecyclerView 看这篇就够了
  18. What is a Posterior Probability?
  19. jvm优化技巧,Java堆,old区,Eden区,s0和s1区,老年代,新生代
  20. iOS开发 - 用AVPlayer封装一个播放器

热门文章

  1. It's a start!
  2. MVC5+EF6 入门完整教程四
  3. 记GMIC 2014
  4. 验证码识别笔记(二)
  5. chrome中Google插件导出导入
  6. 李洋疯狂C语言之关于自增自减遇到的一些问题
  7. VR全景看年评!PConline年度评测盛典等你来体验
  8. IntelliJ 启动不同端口的两个spring cloud项目
  9. windows10中远程访问凭据不工作
  10. DEDE 会员调用方法详解