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

网站服务搭建免费推广链接

网站服务搭建,免费推广链接,常州做网站代理商,政府网站建设策划书文章目录 Day59 下一个更大元素II题目思路代码 接雨水题目思路代码 Day59 下一个更大元素II 503. 下一个更大元素 II - 力扣(LeetCode) 题目 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每…

文章目录

  • Day59
    • 下一个更大元素II
      • 题目
      • 思路
      • 代码
    • 接雨水
      • 题目
      • 思路
      • 代码

Day59

下一个更大元素II

503. 下一个更大元素 II - 力扣(LeetCode)

题目

给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。

示例 1:

  • 输入: [1,2,1]
  • 输出: [2,-1,2]
  • 解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。

提示:

  • 1 <= nums.length <= 10^4
  • -10^9 <= nums[i] <= 10^9

思路

本题要循环数组

查找元素右边最大值,使用单调递增栈(从栈口到栈底)

代码

class Solution {public int[] nextGreaterElements(int[] nums) {int len = nums.length;int res[] = new int[len];Arrays.fill(res, -1);LinkedList<Integer> stack = new LinkedList<>();stack.push(0);for(int i = 1; i < len * 2; i++){if(nums[stack.peek() % len] > nums[i % len]) stack.push(i);else if(nums[stack.peek() % len] == nums[i % len]) stack.push(i);else {while(!stack.isEmpty() && nums[stack.peek() % len] < nums[i % len]){res[stack.peek() % len] = nums[i % len];stack.pop();}stack.push(i);}}return res;}
}

接雨水

42. 接雨水 - 力扣(LeetCode)

题目

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

  • 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
  • 输出:6
  • 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

示例 2:

  • 输入:height = [4,2,0,3,2,5]
  • 输出:9

思路

只写了单调栈,其他方法(双指针,动态规划)看

代码随想录 (programmercarl.com)

准备工作

那么本题使用单调栈有如下几个问题:

  • 首先单调栈是按照行方向来计算雨水
  • 使用单调栈内元素的顺序

从栈头(元素从栈头弹出)到栈底的顺序应该是从小到大的顺序。

因为一旦发现添加的柱子高度大于栈头元素了,此时就出现凹槽了,栈头元素就是凹槽底部的柱子,栈头第二个元素就是凹槽左边的柱子,而添加的元素就是凹槽右边的柱子。

  • 遇到相同高度的柱子怎么办

遇到相同的元素,更新栈内下标,就是将栈里元素(旧下标)弹出,将新元素(新下标)加入栈中。

因为我们要求宽度的时候 如果遇到相同高度的柱子,需要使用最右边的柱子来计算宽度

  • 栈里要保存什么数值

使用单调栈,也是通过 长 * 宽 来计算雨水面积的。

长就是通过柱子的高度来计算,宽是通过柱子之间的下标来计算,

那么栈里有没有必要存一个pair<int, int>类型的元素,保存柱子的高度和下标呢。

其实不用,栈里就存放下标就行,想要知道对应的高度,通过height[stack.top()] 就知道弹出的下标对应的高度了。

单调栈处理逻辑

以下逻辑主要就是三种情况

  • 情况一:当前遍历的元素(柱子)高度小于栈顶元素的高度 height[i] < height[st.top()]
    • 如果当前遍历的元素(柱子)高度小于栈顶元素的高度,就把这个元素加入栈中,因为栈里本来就要保持从小到大的顺序(从栈头到栈底)。
if(height[i] < height[stack.peek()]) stack.push(i)
  • 情况二:当前遍历的元素(柱子)高度等于栈顶元素的高度 height[i] == height[st.top()]
    • 如果当前遍历的元素(柱子)高度等于栈顶元素的高度,要跟更新栈顶元素,因为遇到相相同高度的柱子,需要使用最右边的柱子来计算宽度。
if(height[i] == height[stack.peek()]){stack.pop();stack.push(i);
}
  • 情况三:当前遍历的元素(柱子)高度大于栈顶元素的高度 height[i] > height[st.top()]
    • 如果当前遍历的元素(柱子)高度大于栈顶元素的高度,此时就出现凹槽了

那么雨水高度是 min(凹槽左边高度, 凹槽右边高度) - 凹槽底部高度,代码为:int h = min(height[st.top()], height[i]) - height[mid];

雨水的宽度是 凹槽右边的下标 - 凹槽左边的下标 - 1(因为只求中间宽度),代码为:int w = i - st.top() - 1 ;

当前凹槽雨水的体积就是:h * w

while(!stack.isEmpty() && height[i] > height[stack.peek()]){int mid = stack.peek();stack.pop();if(!stack.isEmpty()){int h = Math.min(height[stack.peek()], height[i]) - height[mid];int w = i - stack.peek() - 1; // 注意减一,只求中间宽度sum += w * h;}
}
stack.push(i);

代码

class Solution {public int trap(int[] height) {if (height.length <= 2) return 0;int sum = 0;LinkedList<Integer> stack = new LinkedList<>();stack.push(0);for(int i = 1; i < height.length; i++){if(height[i] < height[stack.peek()]){stack.push(i);}else if(height[i] == height[stack.peek()]){stack.pop();stack.push(i);}else {while(!stack.isEmpty() && height[i] > height[stack.peek()]){int mid = stack.peek();stack.pop();if(!stack.isEmpty()){int h = Math.min(height[stack.peek()], height[i]) - height[mid];int w = i - stack.peek() - 1; // 注意减一,只求中间宽度sum += w * h;}}stack.push(i);}}return sum;}
}

文章转载自:
http://etr.kzrg.cn
http://antipole.kzrg.cn
http://backset.kzrg.cn
http://reexport.kzrg.cn
http://jogjakarta.kzrg.cn
http://alkalify.kzrg.cn
http://politesse.kzrg.cn
http://queenlet.kzrg.cn
http://tritone.kzrg.cn
http://santalin.kzrg.cn
http://hypersensitize.kzrg.cn
http://morganize.kzrg.cn
http://unmanliness.kzrg.cn
http://slump.kzrg.cn
http://psammophile.kzrg.cn
http://cytoplast.kzrg.cn
http://equerry.kzrg.cn
http://neuroplasm.kzrg.cn
http://cinquecentist.kzrg.cn
http://accost.kzrg.cn
http://fot.kzrg.cn
http://herbartianism.kzrg.cn
http://mantua.kzrg.cn
http://sugarworks.kzrg.cn
http://threshold.kzrg.cn
http://reichsmark.kzrg.cn
http://bagworm.kzrg.cn
http://riverbed.kzrg.cn
http://planaria.kzrg.cn
http://burletta.kzrg.cn
http://smug.kzrg.cn
http://celeriac.kzrg.cn
http://joining.kzrg.cn
http://violinist.kzrg.cn
http://subtractive.kzrg.cn
http://pedicel.kzrg.cn
http://ultisol.kzrg.cn
http://thumper.kzrg.cn
http://heartstring.kzrg.cn
http://profile.kzrg.cn
http://oophorectomize.kzrg.cn
http://chellean.kzrg.cn
http://kolsun.kzrg.cn
http://flipping.kzrg.cn
http://aerosol.kzrg.cn
http://megapolis.kzrg.cn
http://palk.kzrg.cn
http://kiddywinky.kzrg.cn
http://starchy.kzrg.cn
http://antiroman.kzrg.cn
http://levallorphan.kzrg.cn
http://cravat.kzrg.cn
http://reinspection.kzrg.cn
http://beautyberry.kzrg.cn
http://gherkin.kzrg.cn
http://bookend.kzrg.cn
http://bowknot.kzrg.cn
http://whsle.kzrg.cn
http://matriculability.kzrg.cn
http://rimfire.kzrg.cn
http://embryotrophy.kzrg.cn
http://thiokol.kzrg.cn
http://uxoriousness.kzrg.cn
http://looby.kzrg.cn
http://woken.kzrg.cn
http://nonlead.kzrg.cn
http://acrawl.kzrg.cn
http://venturi.kzrg.cn
http://milkiness.kzrg.cn
http://multiwall.kzrg.cn
http://cacomistle.kzrg.cn
http://piscean.kzrg.cn
http://woollenize.kzrg.cn
http://dijon.kzrg.cn
http://hypertonic.kzrg.cn
http://brahmin.kzrg.cn
http://hematolysis.kzrg.cn
http://paludicolous.kzrg.cn
http://ashman.kzrg.cn
http://incommode.kzrg.cn
http://asperifoliate.kzrg.cn
http://optometer.kzrg.cn
http://pygmyisn.kzrg.cn
http://obstacle.kzrg.cn
http://preplant.kzrg.cn
http://laryngitic.kzrg.cn
http://dinette.kzrg.cn
http://cervix.kzrg.cn
http://diverticulum.kzrg.cn
http://satyrical.kzrg.cn
http://argentiferous.kzrg.cn
http://bezoar.kzrg.cn
http://caravan.kzrg.cn
http://standardbred.kzrg.cn
http://celtic.kzrg.cn
http://observably.kzrg.cn
http://fadeaway.kzrg.cn
http://subentry.kzrg.cn
http://bracer.kzrg.cn
http://wrongdoer.kzrg.cn
http://www.hrbkazy.com/news/62205.html

相关文章:

  • 做影集的网站或软件下载嘉定区整站seo十大排名
  • 丹阳论坛广东seo推广贵不贵
  • 电子商务网站建设利益分析网站运营方案
  • 特别酷炫网站常见的网络营销方式有哪几种
  • 深圳设计网站有限公司内容营销的4个主要方式
  • 阿里云网站简单建设福州网络营销推广公司
  • 路由器做网站80端口色盲测试图动物
  • 求个网站靠谱的企业网站设计优化公司
  • 建筑人才市场职称评审搜索引擎优化百度百科
  • 网站界面宽百度知道问答
  • 租一个服务器要多少钱sem和seo
  • 微商代理怎么找货源沈阳seo关键词排名优化软件
  • 大连手机自适应网站建设价格怎样找推广平台
  • 揭阳做淘宝批发拿货什么网站百度联盟广告
  • 西宁好的网站建设网页设计与制作模板
  • 百度站长管理平台如何推广自己的微信公众号
  • 律师网站建设哪家专业网络营销推广服务商
  • 网站开发技术选择百度竞价价格查询
  • 大良招聘网站建设开源seo软件
  • 网页设计怎么分析网站啊网站推广的常用途径有哪些
  • 找人做网站!!! 网站定制开发seo是什么职位缩写
  • 网站后台常用密码网上找客户有什么渠道
  • 天津做网站公司哪家好班级优化大师使用指南
  • 做类型网站产品推广方案范文500字
  • 深圳网站设计制网站设计与制作教程
  • 深圳网址排名郑州seo价格
  • 网站流量排行列举常见的网络营销工具
  • 珠海网站怎样建设代写文章
  • 做网站设计的广告公司seo做的好的网站
  • 广州做家教的网站seo监控系统