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

退役军人事务部网站建设机票旅游网站开发

退役军人事务部网站建设,机票旅游网站开发,.net网站开发面试,临潼网站建设题目1:232 用栈实现队列 题目链接:232 用栈实现队列 题意 用两个栈实现先入先出队列(一个入栈,一个出栈),实现如下功能: 1)push:将元素x推到队列末尾 2)…

题目1:232 用栈实现队列

题目链接:232 用栈实现队列

题意

两个栈实现先入先出队列(一个入栈,一个出栈),实现如下功能:

1)push:将元素x推到队列末尾

2)pop:从队列的开头移除并返回元素

3)peek:返回队列开头的元素

4)empty:若队列为空,返回true,否则,返回false

代码

class MyQueue {
public:stack<int> stackIn;//入栈stack<int> stackOut;//出栈MyQueue(){}void push(int x){stackIn.push(x);}int pop(){//stackOut出栈为空时,放入元素if(stackOut.empty()){while(!stackIn.empty()){stackOut.push(stackIn.top());stackIn.pop();}}//出栈不为空时,直接弹出元素int result = stackOut.top();stackOut.pop();return result;}int peek(){int result = this->pop();//复用上面的pop()函数,stackOut.push(result);//但是还需要将元素放回出栈中return result;}bool empty(){return (stackIn.empty() && stackOut.empty());}};/*** Your MyQueue object will be instantiated and called as such:* MyQueue* obj = new MyQueue();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->peek();* bool param_4 = obj->empty();*/
  • 时间复杂度: push和empty为O(1), pop和peek为O(n)
  • 空间复杂度: O(n)

题目2: 225 用队列实现栈

题目链接:225 用队列实现栈

题意

使用两个队列实现栈,实现如下功能

push:将元素x压入栈顶

pop:移除并返回栈顶的元素

top:返回栈顶的元素

empty:栈为空,返回true,否则,返回false

两个队列

其中一个队列(que2)用来备份,把que1要弹出的元素以外的元素都备份到que2,然后弹出que1中的那个元素,再将que2中的元素放到que1中,同时清空que2

逻辑
例1:que2每次都要清空

每pop一次,que2都要备份一次,一定要是空的,才能接续不断地进行操作,如果不清空的话,有可能已经弹出的元素会再次回到栈中

例2:que2的全部元素都要移动到que1中

因为que2中保存的是当前pop操作que1中没有用到的元素,为了保证后续操作,要将que2中的全部元素移动到que1中。

代码

class MyStack {
public:queue<int> que1;queue<int> que2;MyStack(){}void push(int x){que1.push(x);}int pop(){int size = que1.size();size--;while(size--){que2.push(que1.front());//que2备份que1弹出的元素que1.pop();}int result = que1.front();que1.pop();//que1 = que2while(!que2.empty()){que1.push(que2.front());que2.pop();}return result;}int top(){return que1.back();}bool empty(){return que1.empty();}
};/*** Your MyStack object will be instantiated and called as such:* MyStack* obj = new MyStack();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->top();* bool param_4 = obj->empty();*/
  • 时间复杂度: pop为O(n),其他为O(1)
  • 空间复杂度: O(n)

一个队列(★)

模拟出栈时,将队列头部(出)的size-1个元素依次重新添加到队尾(入),剩下的那个没有移动的元素就是所求

代码

class MyStack {
public:queue<int> que;MyStack(){}void push(int x){que.push(x);}int pop(){int size = que.size();size--;while(size--){que.push(que.front());que.pop();}int result = que.front();que.pop();return result;}int top(){return que.back();}bool empty(){return que.empty();}
};/*** Your MyStack object will be instantiated and called as such:* MyStack* obj = new MyStack();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->top();* bool param_4 = obj->empty();*/
  • 时间复杂度: pop为O(n),其他为O(1)
  • 空间复杂度: O(n)
http://www.yayakq.cn/news/225092/

相关文章:

  • 石家庄工信部网站怎样在网站做友情链接
  • 全flash网站模板菏泽网站建设公司官网
  • 网站后台发表文章网站建设需经历的步骤
  • 南宁网站优化公司哪家好徽信小程序是什么
  • 网站建设代码实例网站的排名就是友情链接
  • 取名网站怎么做搭建外文网站
  • 专业开发网站企业什么是网络营销?网络营销与电商营销有什么区别?
  • 网站建设及相关流程图ftp网站服务器
  • 如何知道自己网站主机哪里可以免费申请空间 注册域名 申请网站
  • 乐清市做淘宝网站公司开展建设文明网站活动方案
  • 邯郸专业网站建设公司建设h5网站
  • 定制型网站建设合同范本硬件开发设计流程
  • 网站模版怎样使用网站建设培训班
  • 佛山网站建设3lue3luewordpress简单用户积分
  • 无锡网站建设专注千客云网络微信支付 wordpress
  • 烟台网站推广排名如何做线上营销
  • iis配置网站访问权限合肥网站关键词优化
  • 企业建站系统开源网站404页面的作用
  • 网站负责人照片中国商标注册查询官网
  • 生鲜网站策划做网站签到挣钱吗
  • 网站背景磨砂灰背景怎么做域名查询站长工具
  • 短视频营销论文重庆seo薪酬水平
  • 如何购买网站虚拟主机网络工程师报名时间2022
  • 做网站要学哪些程序网站合同需要注意什么呢
  • 做网站内容图片多大宁波seo品牌推广排名
  • mvc 网站路径网站开发企业标准
  • 优品ppt模板免费下载网站铁路建设标准网站
  • 武威 网站开发网址大全官方免费下载安装
  • 网站中下滑菜单怎么做威县网站建设
  • 厦门网站到首页排名保险网站导航