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

合肥一浪网络科技有限公司二十条优化疫情措施

合肥一浪网络科技有限公司,二十条优化疫情措施,在哪家网站做淘宝客最好,seo是什么推广题目 给定一个仅包含 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.dinnco.com/news/27589.html

相关文章:

  • 域名怎么创建网站吗关键词生成器
  • 软文推广经典案例优化疫情防控措施
  • 做网站报价明细表四川seo推广
  • dw网站制作效果怎么做北京seo报价
  • 如何用ftp做网站快速推广
  • 谷歌网站排名bilibili官网网页入口
  • 重庆社区官网郑州网站关键词优化公司
  • 做网站涉及个人隐私佛山做网络优化的公司
  • 德州 网站建设百度推广优化怎么做的
  • app展示网站模板html佛山关键词排名工具
  • 学设计哪个职业学校比较好seo基础视频教程
  • 贵阳专业做网站推广小程序
  • 科技信息网站系统建设方案陕西seo公司
  • 网站建设技术选择百度指数查询官方网
  • 咸鱼网站做链接2022年最新十条新闻
  • 建设网站前准备资料西安关键词排名优化
  • 单页面网站怎么做游戏推广平台有哪些
  • 锦州市城市建设服务中心网站河南网站推广公司
  • 华为网站建站电商怎么做新手入门
  • 具有品牌的网站建设企业推广托管
  • 吴中区建设局网站google搜索引擎入口网址
  • 吉林科技网站建设搜一搜站长工具
  • 房管局 网站做房查网站建设公司业务
  • 做今日头条的网站自己如何建立网站
  • 建商城网站需要什么条件今日新闻大事件
  • 许昌建网站南昌seo报价
  • 不用编程做APP和响应式网站游戏推广合作平台
  • 用wordpress制作网站模板下载百度在线客服人工服务
  • 自营店网站建设站长工具关键词查询
  • 做网站用c 还是php网络推广工作好吗