Leetcode P85 Java

执行用时:8 ms, 在所有 Java 提交中击败了73.52%的用户

内存消耗:46.4 MB, 在所有 Java 提交中击败了10.50%的用户

通过测试用例:74 / 74

ideas

首先我们获取传入数组的长度,如果数组长度等于0那么就是特殊情况直接返回0,我们的主要思路就是把2D数组转换为以为1D数组,进行求它的最大面积,所以我们还需要创建一个1维数组来接受2维数组抓换为1维数组的数据。这个一维数组主要存储的就是当前行的此列的1连续的高度

int r = matrix.length;
//特殊情况 如果数组长度为0
if (r == 0){return 0;
}
int c = matrix[0].length;
//将二维数组转换为1维数组 记录当前行数柱形的高度
int[] arr = new int[c];
int res = 0;

​ 接下来我们遍历数组将二维数组,求每一行的当前柱子的最大长度,然后去获取当前这行数组的当前列最大的高度。

        for (int i = 0; i < r; i++) {//转换为1维数组for (int j = 0; j < c; j++) {if (matrix[i][j] == '1'){arr[j]++;}else{arr[j] = 0;}}//查看当前一维数组最高的高度res = Math.max(res,getMaxAersInArrays(arr));}

获取当前最大面积的时候我们已i下标为中心,分别向左和右查看,如果向两侧白遍历发现元素大于等于arr[i]那么进行记录宽度,否则直接break打断,遇见0也是break打断,打断后开始w*h计算面积,记录最大的面积

    public int getMaxAersInArrays(int[] arr){int res = 0;int n  = arr.length;for (int i = 0; i < n; i++) {int h = arr[i];if (h == 0){continue;}int w = 1;int start = i;for (int j = start+1; j < n ; j++) {int tmph = arr[j];if (tmph == 0){break;}if (tmph >= h){w++;}else{break;}}for (int j = start-1; j >=0 ; j--) {int tmph = arr[j];if (tmph == 0){break;}if (tmph>= h){w++;}else{break;}}res = Math.max(res,w*h);}return res;}

code

public int maximalRectangle(char[][] matrix) {int r = matrix.length; //特殊情况 如果数组长度为0if (r == 0){return 0;}int c = matrix[0].length;//将二维数组转换为1维数组 记录当前行数柱形的高度int[] arr = new int[c];int res = 0;for (int i = 0; i < r; i++) {//转换为1维数组for (int j = 0; j < c; j++) {if (matrix[i][j] == '1'){arr[j]++;}else{arr[j] = 0;}}//查看当前一维数组最高的高度res = Math.max(res,getMaxAersInArrays(arr));}return res;
}public int getMaxAersInArrays(int[] arr){int res = 0;int n  = arr.length;for (int i = 0; i < n; i++) {int h = arr[i];if (h == 0){continue;}int w = 1;int start = i;for (int j = start+1; j < n ; j++) {int tmph = arr[j];if (tmph == 0){break;}if (tmph >= h){w++;}else{break;}}for (int j = start-1; j >=0 ; j--) {int tmph = arr[j];if (tmph == 0){break;}if (tmph>= h){w++;}else{break;}}res = Math.max(res,w*h);}return res;
}

Leetcode P85 Java相关推荐

  1. leetcode 46 java,leetcode46.java

    package leetcode; import java.util.ArrayList; import java.util.List; /** * Created by 林剑 on 2016/10/ ...

  2. Leetcode算法Java全解答--37. 解数独

    Leetcode算法Java全解答–37. 解数独 文章目录 Leetcode算法Java全解答--37. 解数独 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 编写一个 ...

  3. Leetcode算法Java全解答--19. 删除链表的倒数第N个节点

    Leetcode算法Java全解答–19. 删除链表的倒数第N个节点 文章目录 Leetcode算法Java全解答--19. 删除链表的倒数第N个节点 题目 想法 结果 总结 代码 我的答案 大佬们的 ...

  4. Leetcode P44 java一次遍历

    Leetcode P44 java一次遍历 执行用时:2 ms, 在所有 Java 提交中击败了93.75%的用户 内存消耗:41.2 MB, 在所有 Java 提交中击败了99.19%的用户 通过测 ...

  5. Leetcode算法Java全解答--41. 缺失的第一个正数

    Leetcode算法Java全解答–41. 缺失的第一个正数 文章目录 Leetcode算法Java全解答--41. 缺失的第一个正数 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 ...

  6. Leetcode算法Java全解答--12. 整数转罗马数字

    Leetcode算法Java全解答–12. 整数转罗马数字 文章目录 Leetcode算法Java全解答--12. 整数转罗马数字 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 ...

  7. Leetcode算法Java全解答--75. 颜色分类

    Leetcode算法Java全解答–75. 颜色分类 文章目录 Leetcode算法Java全解答--75. 颜色分类 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 给定 ...

  8. Leetcode算法Java全解答--60. 第k个排列

    Leetcode算法Java全解答–60. 第k个排列 文章目录 Leetcode算法Java全解答--60. 第k个排列 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 ...

  9. Leetcode算法Java全解答--73. 矩阵置零

    Leetcode算法Java全解答–73. 矩阵置零 文章目录 Leetcode算法Java全解答--73. 矩阵置零 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 给定 ...

最新文章

  1. Windows下安装ElasticSearch6.3.1以及Head插件
  2. vue获取元素距离页面顶部的距离_VUE实时监听元素距离顶部高度的操作
  3. Nacos,阿里开源,是真的香!!
  4. 解决篇:wampserver访问your projects项目,路径不加localhost前缀 - 解决篇
  5. ElasticSearch的初级安装
  6. android 下拉框大全,Android 下拉列表Spinner
  7. SQL中 and or in的用法
  8. 使用iToolab UnlockGo 删除iPhone/iPad上的各种锁
  9. 文件共享服务器如何提高网速,局域网共享文件传输速度很慢怎么办
  10. apkg格式怎么打开_干货:pdf转换器简单、好用,还能在线互转文件格式!
  11. VBS整人代码 很多 测试把我给整安逸了
  12. 微信公众号里面服务器配置关闭,微信公众号服务器配置无法修改
  13. 视音频编解码技术零基础学习方法
  14. 全基因组组装,注释与评估软件
  15. 计算机左侧没有桌面菜单栏,AI软件左侧的工具栏不见了没有了怎么显示出来
  16. 阿里巴巴离职DBA 35岁总结的职业生涯(转)
  17. pandas读取带中文的csv
  18. 高性能服务器编程-信号
  19. 花5分钟用Redis撸一个东京奥运会金牌排行榜
  20. 【BUUCTF】MISC 来首歌吧

热门文章

  1. HDU1117 Booklet Printing
  2. 美国联邦通信委员会终结机器人犯罪的运动可能会得到新的推动
  3. HTML5期末大作业:主题旅游网站设计——蓝色主题旅游网页设计(6页) HTML+CSS+JavaScript 主题出行
  4. python箭头图_python – 箭头图箭头长宽比
  5. java蜘蛛纸牌课程设计_蜘蛛纸牌程序设计
  6. JS|JavaScript库
  7. ora-06533:wrong number or types of arguments in call to 'XXX'
  8. Excel中文转换为拼音(大写首字母、小写首字母、全拼、全拼首首字母大写)
  9. KingRan库配置京东账号
  10. coredns CrashLoopBackOff 错误排查