思路:动态规划。对于第i行第j列的元素grid[i][j]表示的是这个元素的plus sign的等级,初始化不在mines中的元素对应的grid值为较大值(只要大于N/2即可),在mines中的元素对应的grid值为0。不在mines中的元素,其grid[i][j]=左右上下四个方向最少的连续1的个数(不包括自己)+1。以由左至右为例,假设当前的grid[i][j]已经最优,那么如果(i,j)左侧没有grid[i][j]=0的元素的话,grid[i][j]就要和l取较小值表示当前的最优;如果左侧有grid[i][j]=0的元素,假设是grid[i][k]=0,那么就是取grid[i][j]和j-k的较小值表示当前的最优。最后的最后,取grid[i][j]最大的值作为返回值。

 1 class Solution {
 2     public int orderOfLargestPlusSign(int N, int[][] mines) {
 3         int[][] grid = new int[N][N];
 4         for(int[] m:grid) {
 5             Arrays.fill(m, N);//初始化为较大值
 6         }
 7         for(int[] m:mines) {
 8             grid[m[0]][m[1]] = 0;
 9         }
10         for(int i = 0; i < N; i++) {
11             for(int j = 0, k = N - 1, l = 0, r = 0, u = 0, d = 0; j < N; j++, k--) {
12                 grid[i][j] = Math.min(grid[i][j], l = (grid[i][j] == 0 ? 0 : l + 1));//由左至右
13                 grid[i][k] = Math.min(grid[i][k], r = (grid[i][k] == 0 ? 0 : r + 1));//由右至左
14                 grid[j][i] = Math.min(grid[j][i], u = (grid[j][i] == 0 ? 0 : u + 1));//由上至下
15                 grid[k][i] = Math.min(grid[k][i], d = (grid[k][i] == 0 ? 0 : d + 1));//由下至上
16             }
17         }
18         int res = 0;
19         for(int i = 0; i < N; i++) {
20             for(int j = 0; j < N; j++) {
21                 res = Math.max(res, grid[i][j]);
22             }
23         }
24         return res;
25     }
26 }

转载于:https://www.cnblogs.com/Deribs4/p/8289925.html

Leetcode 764. Largest Plus Sign相关推荐

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

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

  2. leetcode 764.Largest Plus Sign

    根据题意的话就是在非0的地方开始寻找上下左右分别能够走到的最大步长的. 那么使用暴力的方法竟然leetcode还是给过了. class Solution { public:int orderOfLar ...

  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. AngularJS 国际化——Angular-translate
  2. java高并发下的数据安全
  3. EM算法和GMM(下)
  4. boost::hana::index_if用法的测试程序
  5. JavaWeb课程复习资料——中文乱码上下文处理
  6. openai-gpt_您可以使用OpenAI GPT-3语言模型做什么?
  7. Java 8中的instanceof运算符和访客模式替换
  8. c#获取ssl证书有效性_c# – 获取网站SSL证书的公钥
  9. ASP.NET MVC 5 学习教程:添加查询
  10. 从网络营销辞职转行软件测试,100天的心酸拿到9K,过程都是自己在苦撑,只因我...
  11. Sublime 输入中文显示方框问号乱码
  12. sql server需要存储1000万条数据该怎么办?
  13. Java集合类源码分析汇总
  14. HTML实现网页内部的跳转
  15. E盾网络验证企业版个人版离线版易语言源码加密对接好的自绘界面1
  16. linux yassl 漏洞修复,漏洞加固方案.docx
  17. c++ 控制台游戏打砖块
  18. Redis 报错: WRONGTYPE Operation against a key holding the wrong kind of value
  19. c语言中输入n一个整数存入一维数组,编写程序输入n个整数到一维数组(先输入数据的个数n,再输入n个数据),然后以输入的顺序输出这些数。...
  20. SaaS系统设计研发细节复盘

热门文章

  1. thinkpad 61系机器(T61 X61/X61S R61)休眠掉电问题解决办法
  2. dma工作时cpu工不工作_CPU如何工作?
  3. 异步回调地狱_如何逃避异步/等待地狱
  4. gzip格式分析与识别
  5. 2021年浙软夏令营预推免面经
  6. 零基础快速学习Java技术的方法整理
  7. 百度android 测试平台,集成百度活体检测(Android、iOS)
  8. CNCF案例研究:奇虎360
  9. 广东“基因编辑婴儿事件”调查组:将对贺建奎依法依规严肃处理
  10. 阿里发布AliGenie2.0系统,“百箱大战”用上视觉武器