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

安庆市网站建设公司wordpress 8211

安庆市网站建设公司,wordpress 8211,wordpress 底部模块,南京免费发布信息网站题目 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1: 输入:matrix [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,…

题目

给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。

示例 1:

输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]
输出:6
解释:最大矩形如上图所示。
示例 2:

输入:matrix = []
输出:0
示例 3:

输入:matrix = [[“0”]]
输出:0
示例 4:

输入:matrix = [[“1”]]
输出:1
示例 5:

输入:matrix = [[“0”,“0”]]
输出:0

思路

最大矩形面积问题可以使用栈来解决,结合柱状图的特性。下面我将详细解释解题思路,并提供关键算法和算法思想的说明。

解题思路:

对于每一行,我们可以将每个元素的值视为当前位置向上的高度。我们可以根据每一行的高度构建一个柱状图,然后使用栈来计算柱状图中的最大矩形面积。

  1. 对于每一行,我们构建一个高度数组 heights,其中 heights[j] 表示从当前行的第 j 列向上的连续 1 的数量。我们可以根据上一行的高度数组和当前行的元素来更新这个数组。

  2. 对于 heights 数组,我们使用栈来辅助计算最大矩形面积。我们遍历 heights 数组,如果当前高度大于栈顶高度,就将当前索引入栈。否则,我们弹出栈顶索引,并计算以该高度为高的矩形面积,宽度为当前索引与弹出索引之间的距离。我们不断更新最大面积,直到栈为空或者当前高度大于栈顶高度。

关键算法和算法思想:

栈是解决这个问题的关键算法思想。通过使用栈,我们可以维护一个递增的高度序列,当遇到下降的高度时,我们可以计算以当前高度为高的矩形面积,利用栈中保存的索引信息。

代码

object Solution {def maximalRectangle(matrix: Array[Array[Char]]): Int = {if (matrix.isEmpty) return 0val rows = matrix.lengthval cols = matrix(0).lengthvar maxArea = 0val heights = Array.fill(cols)(0)def largestRectangleArea(heights: Array[Int]): Int = {val stack = collection.mutable.Stack[Int]()var maxArea = 0for (i <- 0 until heights.length) {while (stack.nonEmpty && heights(i) < heights(stack.top)) {val height = heights(stack.pop())val width = if (stack.isEmpty) i else i - stack.top - 1maxArea = math.max(maxArea, height * width)}stack.push(i)}while (stack.nonEmpty) {val height = heights(stack.pop())val width = if (stack.isEmpty) heights.length else heights.length - stack.top - 1maxArea = math.max(maxArea, height * width)}maxArea}for (i <- 0 until rows) {for (j <- 0 until cols) {if (matrix(i)(j) == '1') heights(j) += 1else heights(j) = 0}maxArea = math.max(maxArea, largestRectangleArea(heights))}maxArea}
}// 示例
val matrix = Array(Array('1','0','1','0','0'),Array('1','0','1','1','1'),Array('1','1','1','1','1'),Array('1','0','0','1','0')
)
val result = Solution.maximalRectangle(matrix)
println(result) // 输出:6
http://www.yayakq.cn/news/366103/

相关文章:

  • 网站脚本错误网站建设初稿
  • 郑州做网站七彩科技仙霞新村街道网站建设
  • 毕设网站开发什么题目好怎么在网站做视频接口
  • 宁波网站制作网站优质的集团网站建设
  • 网页设计站点规划ps网站怎么做滑动背景图片
  • 网站制作乛薇网站备案转移
  • 网站主服务器地址世界建筑网
  • 电子商务网站建设与维护方法分析不包括十堰外贸网站建设
  • 陕西省网站开发快手app下载安装免费下载
  • 网站网页设计制作公司合肥做网站的
  • 泉州优化怎么做搜索网站建设优化石家庄
  • 莱芜建设局网站佳木斯 两学一做 网站
  • 网站建设知名公司the7 做的网站
  • 网站免费注册会员怎么做云南做网站要多少钱
  • 免费网站排名优化在线怎么查一个工地的施工单位
  • 文化传播网站建设wordpress缓存插件
  • 机关网站建设情况汇报响应式网站的建设
  • 做网站的岗位好吗河南网站建设制作价格
  • 织梦cms网站模板个人博客网站下载
  • 上海模板开发建站成都企业网站公司
  • 优秀国外网站设计赏析做网站公司价格多少
  • 国外外包网站建设银行流水查询网站
  • 国外服务器网站wordpress后台缺少菜单
  • 常州企业免费建站建设库平台
  • 泉州企业建站程序电子商务网站建设费用
  • 甘肃省建设厅备案在哪个网站免费做旅游海报的网站
  • 上海方正大厦网站建设免费男女打扑克的软件
  • 打开山东城市建设职业学院网站备案号如何绑定多个网站
  • 网站正在维护中 模板做化工回收上什么网站
  • 专门做物业催收的网站个人博客网页制作图片