当前位置: 首页 > news >正文

最大矩形最大正方形-力扣

题目:

221. 最大正方形

85. 最大矩形

解析:

当成矩形的最大面积来做就行,如果是最大正方形的话就 + 1 个长宽取最小值的限制

代码:

class Solution {public int maximalRectangle(char[][] matrix) {int n = matrix.length;int m = matrix[0].length;int ans = 0;for(int i = 0; i < n; i++){int[] height = new int[m];for(int j = 0; j < m; j++){int num = 0;for(int k = i; k < n; k++){if(matrix[k][j] == '1') num++;else break;}height[j] = num;}System.out.println(Arrays.toString(height));int area = maxArea(height);System.out.println(area);ans = Math.max(ans,area);}return ans;}int maxArea(int[] height){int n = height.length;int[] right = new int[n];int[] left = new int[n];for(int i = 0; i < n; i++) right[i] = n;for(int j = 0; j < n; j++) left[j] = -1;int area = 0;Deque<Integer> de = new ArrayDeque<>();for(int i = 0; i < n; i++){while(!de.isEmpty() && height[i] < height[de.getLast()]){right[de.removeLast()] = i;}de.addLast(i);}de = new ArrayDeque<>();for(int i = 0; i < n; i++){while(!de.isEmpty() && height[de.getLast()] >= height[i]){de.removeLast();}if(!de.isEmpty()) left[i] = de.getLast();de.addLast(i);}for(int i = 0; i< n; i++){area = Math.max(area, (right[i] - left[i] - 1) * height[i]);}return area;    }}
class Solution {public int maximalSquare(char[][] matrix) {int n = matrix.length;int m = matrix[0].length;int ans = 0;for(int i = 0; i < n; i++){int[] height = new int[m];for(int j = 0; j < m; j++){int num = 0;for(int k = i; k < n; k++){if(matrix[k][j] == '1') num++;else break;}height[j] = num;}System.out.println(Arrays.toString(height));int area = maxArea(height);System.out.println(area);ans = Math.max(ans,area);}return ans;}int maxArea(int[] height){int n = height.length;int[] right = new int[n];int[] left = new int[n];for(int i = 0; i < n; i++) right[i] = n;for(int j = 0; j < n; j++) left[j] = -1;int area = 0;Deque<Integer> de = new ArrayDeque<>();for(int i = 0; i < n; i++){while(!de.isEmpty() && height[i] < height[de.getLast()]){right[de.removeLast()] = i;}de.addLast(i);}de = new ArrayDeque<>();for(int i = 0; i < n; i++){while(!de.isEmpty() && height[de.getLast()] >= height[i]){de.removeLast();}if(!de.isEmpty()) left[i] = de.getLast();de.addLast(i);}for(int i = 0; i< n; i++){int area_ = Math.min((right[i] - left[i] - 1), height[i]) * Math.min((right[i] - left[i] - 1), height[i]);area = Math.max(area, area_);}return area;    }
}

http://www.xdnf.cn/news/1074925.html

相关文章:

  • 优雅草蜻蜓HR人才招聘系统v2.0.9上线概要 -优雅草新产品上线
  • 飞算JavaAI 2.0.0深度测评:自然语言编程如何重构开发生产力?
  • 键盘第一下无反应
  • 04密码加密
  • C#程序调用cmd执行命令
  • 卡片跳转到应用页面(router事件)
  • 生成式人工智能实战 | 变分自编码器(Variational Auto-Encoder, VAE)
  • 基于STM32温湿度检测—串口显示
  • HTML5 实现的圣诞主题网站源码,使用了 HTML5 和 CSS3 技术,界面美观、节日氛围浓厚。
  • k8s pod深度解析
  • k8s创建定时的 Python 任务(CronJob)
  • 【c/c++1】数据类型/指针/结构体,static/extern/makefile/文件
  • 机器学习9——决策树
  • 新生代潜力股刘小北:演艺路上的璀璨新星
  • ROS常用的路径规划算法介绍
  • 面试复盘6.0
  • Java面试宝典:基础四
  • SpringSecurity6-oauth2-三方gitee授权-授权码模式
  • 详解快速排序
  • 宏任务与微任务和Dom渲染的关系
  • 左神算法之螺旋打印
  • Redis Cluster Gossip 协议
  • 在Linux系统中部署Java项目
  • 设计模式之装饰者模式
  • 2.安装Docker
  • 怎样学习STM32
  • 暴力风扇方案介绍
  • HarmonyOS实战:自定义表情键盘
  • FPGA实现CameraLink视频解码,基于Xilinx ISERDES2原语,提供4套工程源码和技术支持
  • llama.cpp学习笔记:后端加载