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

网站建设培训厦门动易网站迁移

网站建设培训厦门,动易网站迁移,企业门户网站建设 验收,晋江网站开发503. 下一个更大元素 II(中等) 方法:单调栈 「 对于找最近一个比当前值大/小」的问题,都可以使用单调栈来解决。栈可以很好的保存原始位置,最近影射栈顶。题目要求更大,因此更大即解–出栈,更小…

503. 下一个更大元素 II(中等)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法:单调栈

  • 「 对于找最近一个比当前值大/小」的问题,都可以使用单调栈来解决。
  • 栈可以很好的保存原始位置,最近影射栈顶。题目要求更大,因此更大即解–出栈,更小则入栈。
  • 「 栈内存放的永远是还没更新答案的下标。⌟

思路

  • 首先,创建一个大小为n的答案数组ans,初始化为-1。

  • 然后,使用一个栈s来存储数组中的索引。 从数组的第一个元素开始遍历,将第一个元素的索引压入栈中。

  • 接着遍历数组的剩余元素。对于每个元素,我们将栈顶元素与当前元素进行比较。 如果栈顶元素小于当前元素,则说明栈顶元素的下一个更大元素就是当前元素。 我们将栈顶元素的下一个更大元素设置为当前元素,并将栈顶元素出栈。 重复这个过程,直到栈为空或者栈顶元素不小于当前元素。

  • 最后,将当前元素的索引压入栈中,以便在后面的元素中找到它的下一个更大元素。 当遍历完整个数组后,我们就得到了所有元素的下一个更大元素。

  • 两次遍历:由于目标要么在当前元素之前,要么在之后,因此两次遍历一定能覆盖到。

代码

class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {int n = nums.size();vector<int> ans(n, -1);// vector<int> flag(n, 0);stack<int> s;s.push(0);for(int i=1;i <= 2*n-2;++i){while(!s.empty() && (nums[s.top()] < nums[i%n])){ans[s.top()] = nums[i%n];s.pop();}s.push(i%n);}return ans;}
};
http://www.yayakq.cn/news/916496/

相关文章:

  • 网站没备案能百度推广吗建设银行手机官方网站下载安装
  • wordpress站点运行时间wordpress怎么清空
  • 拓之朴 做网站多少钱网站不更新
  • thinkphp可以做网站吗公司网站建设怎么选择
  • 陈村建网站网络工具
  • 学校网站在哪里找南昌网站建设有限公司
  • 福州网站设计定制公司wordpress 签到 积分
  • 云霄县建设局网站摄影主题 wordpress
  • 免费个人网站建站申请网络公司有几家
  • 做问卷调查用哪个网站网站建设运营预算
  • 上海网站建设公司怎么分辨好坏装饰
  • 广东建设执业资格注册中心网站网站开发和网络设计有什么区别
  • 网站开发多用什么语言还有什么类型的网站
  • wordpress免费企业主题网站模板中国十大做网站公司排名
  • 30天网站建设 视频wordpress dux主题破解安装
  • 网站建设与网页制作案例asp类似wordpress
  • 网站背景色搭配徐州做网站的设计师
  • 廊坊网站搜索优化ui培训学费
  • 中山市西区建设局网站页游小游戏
  • 查网站备案成都景观设计公司排名
  • 什么网站上可以做国际贸易wordpress移动排版xiu
  • 美食网站的建设wordpress产品轮播
  • 建设银行网站在哪里修改支付密码cent7安装wordpress
  • 购物网站需求分析报告wordpress标签文章置顶
  • 影视公司网站设计天元建设集团坑人
  • 郑州制作个人网站网页站点设计
  • 做刷单网站违法吗网站建设 小白
  • 优度网站建设网站编程需要什么语言
  • 网站建设内容大全湖南省建设工程施工合同示范文本
  • 24小时学会网站建设下载ps设计网站