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

惠州网站制作设计帮建网站

惠州网站制作设计,帮建网站,公司网站建设找谁做,wordpress如何添加注册登录一、题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释&#xff1a…

一、题目描述

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1:

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

示例 2:

输入: heights = [2,4]
输出: 4

提示:

  • 1 <= heights.length <=105
  • 0 <= heights[i] <= 104

二、思路分析

使用栈空间来解决本题,通过空间换时间的方式。

三、代码参考

1、Java

class Solution {public int largestRectangleArea(int[] heights) {// 获取数组长度int len = heights.length;// 数组长度为 0 或者 1 时直接返回if(len == 0){return 0;}if(len == 1){return heights[0];}// 用来返回最大面积,初始值为 0int area = 0;// 创建栈空间做辅助Deque<Integer> stack = new ArrayDeque<>();// 循环遍历数组for(int i = 0; i < len; i++){// while(!stack.isEmpty() && heights[stack.peekLast()] > heights[i]){// 获取栈顶高度,并移除当前栈顶int height = heights[stack.removeLast()];// 做特殊的处理,如果当前栈顶的高度和上一个栈顶的高度相同,则也需要进行弹栈while(!stack.isEmpty() && heights[stack.peekLast()] == height){// 移除栈顶元素stack.removeLast();}// 创建宽度变量,初始值为 0int width = 0;// 如果栈为空,说明,有效柱体能够从 i 的左边一直延伸到第一个开始if(stack.isEmpty()){// 所以此时的宽度为 iwidth = i;}else {width = i - stack.peekLast() - 1;}// 计算面积, 长 * 宽,并获取最大面积area = Math.max(area, height * width);}// 将下标存入栈空间中stack.addLast(i);}// 将当前栈中的所有元素弹出while(!stack.isEmpty()){// 获取栈顶高度,并移除当前栈顶int height = heights[stack.removeLast()];// 做特殊的处理,如果当前栈顶的高度和上一个栈顶的高度相同,则也需要进行弹栈while(!stack.isEmpty() && heights[stack.peekLast()] == height){// 移除栈顶元素stack.removeLast();}// 创建宽度变量,初始值为 0int width = 0;// 如果栈为空,说明,有效柱体能够从 i 的左边一直延伸到第一个开始if(stack.isEmpty()){// 所以此时的宽度为 lenwidth = len;}else {width = len - stack.peekLast() - 1;}// 计算面积, 长 * 宽,并获取最大面积area = Math.max(area, height * width);}// 返回面积结果return area;}
}

2、Python

class Solution:def largestRectangleArea(self, heights: List[int]) -> int:size = len(heights)area = 0stack = []for i in range(size):while len(stack) > 0 and heights[i] < heights[stack[-1]]:height = heights[stack.pop()]while len(stack) > 0 and height == heights[stack[-1]]:stack.pop()if len(stack) > 0:width = i - stack[-1] - 1else:width = iarea = max(area, height * width)stack.append(i)while len(stack) > 0 is not None:height = heights[stack.pop()]while len(stack) > 0 and height == heights[stack[-1]]:stack.pop()if len(stack) > 0:width = size - stack[-1] - 1else:width = sizearea = max(area, height * width)return area

http://www.yayakq.cn/news/331160/

相关文章:

  • 炉石吐司做的网站做网站需要什么资料
  • php小型网站开发服装网站建设规划
  • 莱芜聊城网站建设野望是什么意思
  • 长春做商业平台网站成都旅游最佳季节
  • 惠州网站制作专业微信小商店官网入口
  • 一起做陶瓷官方网站app界面设计模板图片
  • 网站建设页面设计之后网站鼠标悬停动态效果代码
  • 唐山建设工程安全监督网站百度百科词条
  • 医院网站 整站源码二度云自助建站系统
  • 怎么做素材设计网站网站域名的后缀
  • 厦门市建设管理协会网站首页国家大宗商品交易平台
  • 深圳正规做网站的公司网站实名认证资料
  • 阿里云网站模板 解析网站下拉广告
  • 淮安建设局网站上海建筑公司排名
  • 网站建设知识产权问题python语言基础
  • 网站后台备份丢失网站ui设计公司
  • 合肥公司网站建设多少费用陕西荣天建设网站
  • 长沙哪里有创建网站的公司wordpress分类搜索
  • 公司网站建设内容深圳口碑好的vi设计公司
  • 如何做网站直播入口广告网站大全
  • 电商网站 建设步骤出名的设计网站
  • 技术支持保定网站建设 定兴德州市经济开发区建设局网站
  • 做招投标网站办公室设计公司
  • 灵璧有做公司网站的吗建筑网站在哪里找
  • 网站盒子怎么做公司网络组建方案模板
  • 企业电子网站的建设案例个人网站备案不能盈利
  • 东莞网站建设方案托管头像logo图片在线制作免费
  • 石家庄制作网站软件做网站时图片的分辨率是多少
  • 计算机网站建设文献综述指定关键词排名优化
  • 有没有找项目的网站铜仁公司做网站