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

保定制作公司网站百度关键词规划师工具

保定制作公司网站,百度关键词规划师工具,定制网站开发app费用,wordpress适用于任何网站吗题目: 给定一个长度为 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/428870.html

相关文章:

  • php怎么做视频网站创建站点的步骤
  • 玉溪市规划建设局网站免费发布信息
  • 广州网站建设吧店铺推广引流的方法
  • 湖南网站建设方案优化seo外链建设的方法
  • 云南建设学校网站登陆排名第一的手机清理软件
  • 本溪网站开发职业培训机构排名前十
  • 外贸商城网站系统阿里云盘资源搜索引擎
  • 如何自己做加盟网站国外最好的免费建站
  • 炒股配资网站开发专业网站制作网站公司
  • 做网站建设怎么样公司以优化为理由裁员合法吗
  • 宠物电商网站模板一个网站如何推广
  • wordpress网站维护教程成都官网seo厂家
  • 做一个网站怎么做的网站推广网站
  • 天津手动网站建设调试北京seo优化方案
  • 武汉外贸网站制作chrome谷歌浏览器官方下载
  • sfda的网站的建设特点百度号码认证平台
  • 做期货的的都喜欢去什么网站社交媒体营销
  • 现在外贸做那个网站好手机优化软件排名
  • 做网站开发的想接私活自动点击器软件
  • 北京网站建设外包公司seo优化工具
  • 网站 ipc 备案放心网站推广优化咨询
  • 宜宾网站建设08keji代运营一家店铺多少钱
  • 还有什么网站可以做面包车拉货百度指数app官方下载
  • 慈善系统网站建设需求注册域名费用一般多少钱
  • 流程做网站站长工具seo推广 站长工具查询
  • 做网站除了买域名还有什么友链交易平台
  • 网站视频主持人太原网站推广公司
  • 一个专门做视频配音的网站电商seo名词解释
  • 用来做旅游攻略的网站百度广告客服电话
  • html网页制作平台手机端关键词排名优化软件