什么网站上面能接点小活做网站建设方案硬件支撑

张小明 2026/1/2 16:02:42
什么网站上面能接点小活做,网站建设方案硬件支撑,手机网站分辨率做多大,杭州网站制作 乐云践新思路#xff1a;本题和接雨水是遥相呼应的题目。原理上有很多相同的地方#xff0c;但细节上又有差异#xff0c;可以加深对单调栈的理解。#xff08;一#xff09;方法一#xff1a;暴力解法#xff0c;超时。#xff08;二#xff09;方法二#xff1a;双指针解法…思路本题和接雨水是遥相呼应的题目。原理上有很多相同的地方但细节上又有差异可以加深对单调栈的理解。一方法一暴力解法超时。二方法二双指针解法。本题要记录每个柱子左边第一个小于该柱子的下标而不是左边第一个小于该柱子的高度因此需要使用while循环查找。附代码class Solution { public int largestRectangleArea(int[] heights) { int len heights.length; int[] minLeftIndex new int[len]; //记录每个柱子左边第一个比它矮的柱子下标 int[] minRightIndex new int[len]; //记录每个柱子右边第一个比它矮的柱子下标 //记录左边第一个小于该柱子的下标 minLeftIndex[0] -1; for(int i 1;i len;i){ int t i - 1; //这里不是用if而是不断向右寻找的过程 while(t 0 heights[t] heights[i]){ t minLeftIndex[t]; //跳跃式查找不是逐个比较。因为如果heights[t]比当前柱子高那么比heights[t]更高的左边柱子也肯定比当前柱子高。这保证了O(n)的时间复杂度。 } minLeftIndex[i] t; } //记录每个柱子右边第一个小于该柱子的下标 minRightIndex[len - 1] len; for(int i len - 2;i 0;i--){ int t i 1; while(t len heights[t] heights[i]){ t minRightIndex[t]; } minRightIndex[i] t; } //求和 int res 0; for(int i 0;i len;i){ int sum heights[i] * (minRightIndex[i] - minLeftIndex[i] - 1); res Math.max(res,sum); } return res; } }三方法三单调栈。1.本题和42.接雨水是遥相呼应的因为接雨水是找每个柱子左右两边第一个大于该柱子高度的柱子而本题是找每个柱子左右两边第一个小于该柱子的柱子。2.单调栈的顺序因为是找每个柱子左右两边第一个小于该柱子的柱子因此顺序为单调递减从栈头到栈底。举例如下图所示只有栈里是从大到小的顺序才能保证可以从栈顶元素找到左右两边第一个小于栈顶元素的柱子3.栈顶元素、栈顶的下一个元素以及要入栈的元素就组成了要求最大面积的高度和宽度。4.分析三种情况1情况一当前遍历的元素的heights[i]大于栈顶元素heights[stack.peek()]的情况。2情况二当前遍历的元素的heights[i]等于栈顶元素heights[stack.peek()]的情况。3情况三当前遍历的元素的heights[i]小于栈顶元素heights[stack.peek()]的情况。5.在heights数组开头和末尾都加了一个元素0。1末尾加0如果数组本身就是升序的例如[2,4,6,8]那么入栈之后都是单调递减一直没有走情况三计算结果的那一步所以最后输出的就是0如下图所示。而在结尾加上0就会让栈里的所有元素走到情况三的逻辑。2开头加0如果数组本身是降序的例如[8,6,4,2]在8入栈后6开始与8进行比较此时可以得到mid(8)、right(6)但是得不到left。这是因为栈将8弹出之后栈里就没有元素了为了避免空栈取值会直接跳过计算结果的逻辑。之后又将6加入栈此时8已经弹出了然后就是4与栈口元素6进行比较周而复始计算的最后结果res就是0如下图所示。3因此需要在heights数组前后各加一个元素0。附代码class Solution { public int largestRectangleArea(int[] heights) { LinkedListInteger stack new LinkedList(); //数组扩容在头和尾各加入一个元素 int[] newHeights new int[heights.length 2]; newHeights[0] 0; newHeights[newHeights.length - 1] 0; for(int i 0;i heights.length;i){ newHeights[i 1] heights[i]; } heights newHeights; stack.push(0); int res 0; // 第一个元素已经入栈从下标1开始 for(int i 1;i heights.length;i){ //heights[i]是和heights[stack.peek()]进行比较的stack.peek()是下标 if(heights[i] heights[stack.peek()]){ stack.push(i); }else if(heights[i] heights[stack.peek()]){ stack.pop(); stack.push(i); }else{ while(heights[i] heights[stack.peek()]){ int mid stack.peek(); stack.pop(); int left stack.peek(); int right i; //此时left是左边第一个比mid矮的元素right是右边第一个比mid矮的元素 //(left,right)左开右开区间内的柱子都 mid的高度 //计算(left,right)区间的宽度 int w right - left - 1; //(left,right)区间的高度就是最矮点的高度即mid的高度 int h heights[mid]; res Math.max(res,w * h); } stack.push(i); } } return res; } }单调栈精简版System.arraycopy()的用法System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)。1src源数组。2srcPos源数组要复制的起始位置。3dest目的数组。4destPos目的数组放置的起始位置。5length复制的长度。附代码class Solution { public int largestRectangleArea(int[] heights) { int[] newHeight new int[heights.length 2]; System.arraycopy(heights,0,newHeight,1,heights.length); //在数组前后各加一个0 newHeight[heights.length 1] 0; newHeight[0] 0; LinkedListInteger stack new LinkedList(); stack.push(0); int res 0; for(int i 1;i newHeight.length;i){ while(newHeight[i] newHeight[stack.peek()]){ int mid stack.pop(); int w i - stack.peek() - 1; int h newHeight[mid]; res Math.max(res,w * h); } stack.push(i); } return res; } }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

福州做网站公司排名wordpress企业主题模板

第一章:提示词效果差?你必须知道的7个Open-AutoGLM优化盲点在使用 Open-AutoGLM 模型进行自然语言生成时,许多开发者发现即使输入了看似合理的提示词(prompt),输出结果仍不尽人意。这往往不是模型能力的问题…

张小明 2025/12/27 1:17:56 网站建设

东城网站制作公司网站建设培训班

纯电动汽车仿真、纯电动公交、纯电动客车、纯电动汽车动力性仿真、经济性仿真。 模型包括电机、电池、车辆模型。 有两种模型2选1: 1 完全用matlab simulink搭建的模型。 2用simscape搭建的车辆模型。 项目开发使用的模型,精确度高,不是随便乱…

张小明 2025/12/27 1:17:24 网站建设

网站布局策划的流程黎平网站开发

当前的 AI Agent(智能体)开发正处于一个尴尬的“青春期”:虽然基于 GPT-4 或 Claude 3.5 等基础模型构建的 Agent 展现出了惊人的潜力,但在面对复杂的现实任务时,它们依然经常“掉链子”——工具调用错误、规划路径迷失…

张小明 2025/12/27 1:16:51 网站建设

制作个人免费网站展示设计WordPress担保系统

今天有同事问我Git的撤销命令revert与reset有什么区别?特意整理了一下,做个比较全面的对比。总体来说,git revert 和 git reset 都是用于撤销更改的 Git 命令,但它们的工作方式和用途都有显著区别。核心区别对比特性git revertgit…

张小明 2025/12/27 1:16:18 网站建设

网站怎么做模板切换前端入职一周被劝退

C++基础入门:从编译器到变量类型的全面解析 1. C++简介 C++ 是一种强大的面向对象语言,它是在 C 语言的基础上进一步发展而来的,具备众多现代特性。在开始深入学习 C++ 之前,我们先来了解几个关键的基础概念。 2. 编译器和链接器 程序的文本内容被称作源代码。编译器的…

张小明 2025/12/27 1:15:45 网站建设

做公司 网站建设房产微网站

Higress网关健康检查实战:构建零故障的云原生服务监控体系 🚀 【免费下载链接】higress Next-generation Cloud Native Gateway | 下一代云原生网关 项目地址: https://gitcode.com/GitHub_Trending/hi/higress 在微服务架构中,服务实…

张小明 2025/12/27 1:15:12 网站建设