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

网站建设对称对比型网店美工考试

网站建设对称对比型,网店美工考试,企业网站制作比较好的,广州易网网站建设一、题目描述 给定 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/839540/

相关文章:

  • 网站建设有哪些岗位非专业人士可以做网站编辑的工作吗
  • 网站开发的关系图和e-r图衡水网站建设的地方
  • 南昌简单做网站多个wordpress 合并
  • 职业学校网站模板wordpress 站点地址
  • 口碑好的购物网站建设wordpress多久学会
  • 电子商务网站开发 ppt上海房产交易网站
  • 网站开发工具 哪个好化妆品网站程序
  • 哈尔滨自助建站模板网站原型图展示
  • 网站建设 加盟中英双语网站模板
  • 做家教网站的资源是什么拼多多关键词排名查询软件
  • 手机响应式网站开发wordpress 支持vr吗
  • 织梦建站教程下载鸣蝉建站平台
  • 大连网站建设企业什么网站找厂做袜子
  • 网站怎么加关键词网页设计模板免费下载网站
  • 企业网站需要多大带宽网站建设行业产业链分析
  • 电商在线设计网站商丘微网站
  • 企业网站建设方案效果做网站设计师好吗
  • 喀什的网站怎么做喀什网站建设百度推广
  • 长尾关键词挖掘爱站网广州电子商务网站建设
  • 做响应式网站的菜单济南富库网络技术有限公司
  • 如何做视频网站不侵权县城做二手车网站
  • 网站设计方案网上商城包括什么类型
  • 内蒙古城乡和建设厅网站深圳网站建设黄浦网络 骗钱
  • 手机网站程序活动策划方案详细模板
  • 做个 公司网站多少钱个人制作的网站
  • 做直播平台网站赚钱吗专业做网站app的公司
  • 网站色哦优化8888本地wordpress建站
  • 江苏省住房建设厅网站首页网络工程是做什么的
  • 徐州市网站网站建设约谈表态发言
  • 建个短视频网站做电影网站成本