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

柳州建网站wordpress 页眉

柳州建网站,wordpress 页眉,组织架构及营销网络怎么填写,python做网站快么题目: 给定一个长度为 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/a/535522.html

相关文章:

  • app设计网站模板佛山高明
  • 网站 用什么数据库房屋设计装修网站
  • 建立网站的目的和意义青岛优化网站技术
  • 石家庄建设企业网站做网站首页图片素材
  • 怎么做企业曝光引流网站二手书网站建设的目的
  • 精通网站建设 pdf微盘wordpress增加分类目录
  • 云端做效果图的网站滨州网站建设公司
  • 泰和县网站免费建站如何查看域名以前是做什么网站的
  • 如何提高网站排名seo中律之窗网站建设
  • 青龙桥网站建设网站qq 微信分享怎么做的
  • 陕西住房城乡建设厅网站国外免费网站服务器
  • 网站logo是指中山营销网站建设联系方式
  • 运城网站建设语音直播app开发
  • 建网站找那家企业好如何修改网站的关键词
  • 代做网站公司有哪些软件it网站建设方案
  • 学校网站建设制度企业网站优化排名
  • 动漫网站开发设计思想宁志网站两学一做
  • 软件跟网站开发设立网站 费用
  • windows 网站建设asp评价网站开发文档
  • wordpress留言页面做网站优化找谁
  • 品牌网站建设预算网站网址注册
  • 邯郸网站建设好的公司彩票网站的代理怎么做
  • 网站上传模板后做网站必须要公司才能做吗
  • 网站的外链怎么做深圳网页设计师收入
  • 青岛网站建设在线往网站上做新东西需要什么
  • 路由器映射做网站稳定吗用什么软件做公司网站
  • 常熟网站建设深圳网站建设服务哪家好
  • 自己建立网站多少钱合肥建网站公司地址
  • 网站的关于我们页面wordpress数学公式
  • 梅州新农村建设网站专业系统网站好