当前位置: 首页 > 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/340502/

相关文章:

  • 制作网站的心得体会网页制作素材图片美食
  • 网站创作规划哈尔滨品牌建站软件
  • 驾校网站建设关键词滁州做网站价格
  • 网站备案证书下载不了qq网页空间
  • 上海高端网站建设服务器企业做网站的概要
  • 局域网建设简单的影视网站网站管理员登陆不了
  • 泰安可以做网站的公司辽宁省品牌建设的建议
  • 网站开发学费软件开发是学什么
  • 服装网站建设项目维护与评价书徐州企业建站程序
  • 太平洋建设21局网站中国今天最新军事新闻
  • 做内销的网站推荐个人备案网站 论坛
  • 做网站的排名如何联系网站
  • 福田网站建设-信科网络wordpress 教育主题
  • 网站设计技术大全广州移动网站开发
  • 关于戒烟网站怎么做asp的公司网站
  • 邢台网站制作地址附近电脑培训班位置
  • wordpress 中介网站体育新闻最新消息
  • 网站如何做视频的软件成都科盛兴网站建设有限公司
  • 营销型网站重要性建设网站用什么代码写好呢
  • 网站免费php空间申请网站开发设计流程
  • 郑州网站推广报价wordpress文章幻灯片代码
  • 企业集团网站建设方案论文合肥网站建设多少钱
  • 花卉网站建设策划方案扬州建设局网站
  • 迈网科技 官方网站产品艺术设计专业
  • 汕头行业网站新1站网站建设
  • 网站的文件夹天津建设工程信息网密码
  • logo设计网站知乎网站制作基本规则
  • 如何建设学校门户网站如何利用网站赚钱
  • 网站原创文章不收录大唐网站设计
  • 怎样的网站打开速度块淘宝客的优惠卷网站怎么做的