Leetcode P85 Java

news/2025/1/15 18:50:41/

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;
}

http://www.ppmy.cn/news/405928.html

相关文章

P85

&#xfeff;&#xfeff; /*输入数据时&#xff0c;对输入缓冲区的错误输入进行容错处理*/ #include<stdio.h> #include<stdlib.h> #define N 4 //定义符号常量N int PrintGrade(int x) { if((x<0)||(x>100)) { printf("错误的成绩!\n"…

【李宏毅2020 ML/DL】P85 Transfer Learning

我已经有两年 ML 经历&#xff0c;这系列课主要用来查缺补漏&#xff0c;会记录一些细节的、自己不知道的东西。 本节内容综述 要做一项任务&#xff0c;但是数据不直接与任务相关。这就涉及到了迁移学习。在现实生活中&#xff0c;我们其实不断在做“迁移学习”。关于 Transf…

python中文版语言_《Python自然语言处理》中文版-纠错【更新中。。。】

最近在看《Python自然语言处理》中文版这本书&#xff0c;可能由于是从py2.x到py3.x&#xff0c;加上nltk的更新的原因&#xff0c;或者作者的一些笔误&#xff0c;在书中很多代码都运行不能通过&#xff0c;下面我就整理一下一点有问题的代码。 第一章&#xff1a; p3.该处为小…

p85 CTF夺旗-JAVA考点反编译XXE反序列化

数据来源 图片来源 Java 常考点及出题思路 考点技术&#xff1a;xxe&#xff0c;spel 表达式&#xff0c;反序列化&#xff0c;文件安全&#xff0c;最新框架插件漏洞等 设法间接给出源码或相关配置提示文件&#xff0c;间接性源码或直接源码体现等形式 https://www.cnblog…

PAT B1001-算法笔记顺序P85

1001 害死人不偿命的(3n1)猜想 &#xff08;15 分&#xff09; 卡拉兹(Callatz)猜想&#xff1a; 对任何一个正整数 n&#xff0c;如果它是偶数&#xff0c;那么把它砍掉一半&#xff1b;如果它是奇数&#xff0c;那么把 (3n1) 砍掉一半。这样一直反复砍下去&#xff0c;最后…

python学习基础篇Day08(P85~~95)

b站达内python课学习笔记 P85 Python基础-8.1 课程内容回顾 一、day07复习 """day07 复习能力提升for for# 结论&#xff1a;外层循环执行一次&#xff0c;内层循环执行多次。外层控制行&#xff0c;内层控制列.for r in range(2):# 0 1for c in ran…

文本编辑程序(第四章 P85)

文本编辑程序 一个 3 行文本存储结构示例&#xff1a; typedef int Status; /* Status是函数的类型,其值是函数结果状态代码&#xff0c;如OK等 */ typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */#include<malloc.h> /* malloc()等 */ #include<std…

《推荐系统实战》阅读笔记 第三章 推荐系统冷启动问题

第三章 推荐系统冷启动问题 3.1 冷启动问题简介 冷启动问题类别冷启动问题描述用户冷启动当新用户加入时候&#xff0c;没有他的相关数据&#xff0c;那么如何给他做推荐物品冷启动主要解决如何将新的物品推荐给可能对它感兴趣的用户这一问题系统冷启动主要解决如何在一个新开…