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

保定制作公司网站赣州seo唐三

保定制作公司网站,赣州seo唐三,自有服务器可以做网站吗,三网合一网站建设题目: 给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。要求:时间复杂度为O(N) 思路: 从左往右将序列中的数与栈顶元素比较,如果小于栈顶元素,则弹栈并继…

题目:

给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。要求:时间复杂度为O(N)

思路:

从左往右将序列中的数与栈顶元素比较,如果小于栈顶元素,则弹栈并继续比较,直到栈顶元素大于等于当前的数或栈空。如果当前数小于栈顶元素那么栈顶元素就是当前数左边第一个更小的数(因为栈具有先进先出的性质);如果栈空,那么左边不存在更小的数。接着将当前数入栈,继续遍历序列……

代码:

#include<iostream>
#include<stack>
#include<vector>
using namespace std;vector<int> decStack(vector<int> v1)
{stack<int> s;vector<int> v2;for (auto it = v1.begin(); it != v1.end(); it++){while (!s.empty() && *it < s.top())//小于则出栈继续寻找s.pop();if (s.empty())//如果栈空则不存在v2.push_back(-1);else//如果大于或等于,栈顶元素就是左边第一个比当前元素小的数v2.push_back(s.top());s.push(*it);}return v2;
}int main()
{vector<int> v1 = { 2,1,3,5,4 };vector<int> v2 = decStack(v1);for (auto it = v2.begin(); it != v2.end(); it++){cout << *it << " ";}return 0;
}

原理:单调栈

单调栈即从栈顶至栈底单调递增或者单调递减的栈。常有如下应用场景:

(1)寻找序列数左侧第一个更小值(单调递减栈):方法如上

(2)寻找序列数左侧第一个更大值(单调递增栈):方法与上面类似,一直寻找大于序列数的栈元素,小于的出栈;或者直到栈空。然后将当前序列数入栈,继续遍历……

时间复杂度:

每个序列数至多入栈一次、出栈一次,时间复杂度为O(n)

参考:单调栈详解及其应用-CSDN博客

http://www.dtcms.com/wzjs/498266.html

相关文章:

  • 怎么联网访问自己做的网站软文推广的好处
  • 学做衣服网站外贸企业网站设计公司
  • 做网站公司哪家公司线下推广方式有哪些
  • 怎么做自己的音乐网站南宁关键词优化软件
  • 做家居建材出口网站有哪些如何在网上推广自己的产品
  • 在哪个网站可以查做项目中标的app下载免费安装
  • ps做网站要求成都seo推广员
  • 网页制作网站aso优化渠道
  • 西宁网站建设服务公司推广策略可以分为哪三种
  • 自建外贸网站多少钱互联网论坛
  • wordpress 系统安装教程 pdf福州短视频seo服务
  • 有哪些做笔译的网站seo教程seo优化
  • 如何建网站吗?摘抄一小段新闻
  • 网页设计制作与代码整体素材优化搜索引擎
  • 求个网站2021能用的服务推广软文范例
  • 品牌网站建设解决百度站长
  • wordpress twenty twelve深圳关键词优化怎么样
  • 怎么做网站赚大钱小程序开发公司前十名
  • 相册模版网站图片展示百度入口
  • 哪个做网站比较好游戏推广一个月能拿多少钱
  • 石景山老山网站建设百度推广销售
  • 中山网站建设文化价格抖音广告怎么投放
  • 清理网站数据库近期国内新闻
  • 北京pk10盘制作网站建设自媒体平台有哪些
  • 之梦网站怎么做seo免费网站开发平台
  • 网站页面创意网络推广主要工作内容
  • 网站开发 为什么要用缩略图制作网站教程
  • 济南做外贸的网站公司吗杭州网站关键词排名
  • 郑州网站seo多少钱优化游戏的软件
  • 做网站中心百度提交网站收录入口