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

google提交网站凡科网做网站要钱吗

google提交网站,凡科网做网站要钱吗,宽带一般多少钱一个月,五金加工东莞网站建设用队列实现栈 题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。int pop() 移除…

用队列实现栈

题目描述

        请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop 和 empty)。

实现 MyStack 类:

  • void push(int x) 将元素 x 压入栈顶。
  • int pop() 移除并返回栈顶元素。
  • int top() 返回栈顶元素。
  • boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
输入:
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 2, 2, false]
解释:
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // 返回 2
myStack.pop(); // 返回 2
myStack.empty(); // 返回 False

解题思路

栈是一种后进先出的数据结构,元素从顶端入栈,然后从顶端出栈。

队列是一种先进先出的数据结构,元素从后端入队,然后从前端出队。

        为了满足栈的特性,即最后入栈的元素最先出栈,在使用队列实现栈时,应满足队列前端的元素是最后入栈的元素。可以使用两个队列实现栈的操作,其中queue1用于存储栈内的元素,queue2作为入栈操作的辅助队列。

        入栈操作时,首先将元素入队到 queue2,然后将 queue1的全部元素依次出队并入队到 queue2,此时 queue2的前端的元素即为新入栈的元素,再将 queue1和 queue2互换,则 queue1的元素即为栈内的元素,queue1的前端和后端分别对应栈顶和栈底。

        由于每次入栈操作都确保 queue1的前端元素为栈顶元素,因此出栈操作和获得栈顶元素操作都可以简单实现。出栈操作只需要移除 queue1的前端元素并返回即可,获得栈顶元素操作只需要获得 queue1的前端元素并返回即可(不移除元素)。

        由于 queue1用于存储栈内的元素,判断栈是否为空时,只需要判断 queue1是否为空即可。 

复杂度分析

时间复杂度:入栈操作O(n),其余操作都是O(1),n是栈内的元素个数

空间复杂度:O(n),需要使用两个队列存储站内的元素

代码

#include <queue>
#include <array>
#include <iostream>
using namespace std;
class MyStack
{
public:queue<int> queue1;queue<int> queue2;/** 初始化栈. */MyStack(){}/** 向栈内添加元素. */void push(int x){queue2.push(x);while (!queue1.empty()){queue2.push(queue1.front());queue1.pop();}swap(queue1, queue2);}/** 移除栈顶元素 */int pop(){int r = queue1.front();queue1.pop();return r;}/** 返回栈顶元素. */int top(){int r = queue1.front();return r;}/** 返回栈是否为空. */bool empty(){return queue1.empty();}
};
int main()
{MyStack myStack;myStack.push(1);myStack.push(2);cout << myStack.top() << endl;  // 返回 2cout << myStack.pop() << endl;;   // 返回 2cout << myStack.empty() << endl; // 返回 False
}

用栈实现队列

题目描述

链接:简单232.用栈实现队列

        请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):

实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾代码
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

说明:

  • 你 只能 使用标准的栈操作 —— 也就是只有 push to toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

解题思路

        将一个栈当作输入栈,用于压入 push传入的数据;另一个栈当作输出栈,用于 pop和 peek操作。每次 pop或 peek时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。

复杂度分析

时间复杂度:push和 emptyO(1),pop和 peek为均摊 O(1)。对于每个元素,至多入栈和出栈各两次,故均摊复杂度为 O(1)。

空间复杂度:O(n)。其中 n是操作总数。对于有 n次 push操作的情况,队列中会有 n个元素,故空间复杂度为 O(n)。

代码

#include <stack>
#include <iostream>
using namespace std;
class MyQueue
{
public:MyQueue(){}void push(int x){// 1.把s1所有元素弹出后依次放入s2while (!s1.empty()){s2.push(s1.top());s1.pop();}// 2.新元素加入到s2顶部s2.push(x);// 3.把s2所有元素弹出后依次放入s1while (!s2.empty()){s1.push(s2.top());s2.pop();}}int pop(){int ret = s1.top();s1.pop();return ret;}int peek(){return s1.top();}bool empty(){return s1.empty();}private:stack<int> s1;stack<int> s2;
};
int main()
{MyQueue myQueue;myQueue.push(1); // queue is: [1]myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)cout << myQueue.peek() << endl; // return 1cout << myQueue.pop() << endl; // return 1, queue is [2]cout << myQueue.empty() <<endl; // return false
}

http://www.yayakq.cn/news/648414/

相关文章:

  • 个人网站页面模板产品推广方式及推广计划
  • 网站中英文切换前端高端网站的建设
  • 不需要写代码的网站开发软件网站后台修改的页面不能显示
  • 深圳租赁住房和建设局网站营销型网站建设公司方法和技巧
  • 广州网站设计服务古镇网站建设
  • 学校网站建设情况说明书做网站公司汉狮
  • 集团网站设计专业团队做普通网站选择什么服务器
  • 网站开发 程序开发阶段长沙百度搜索排名
  • 建网站挣钱成都公司注册地址托管
  • 可以做兼职的网站推荐深圳网站建设网站运营
  • 特效视频网站网站建设产品图
  • 重视网站建设深圳网站制作教程
  • 微信端网站开发流程认识网络营销
  • 怎么在网站上做按钮手机域名访问网站怎么进入
  • 工作室网站建设的意义如何降低网站跳出率
  • 如何做网站国际化商务网站建设PDF下载
  • 后缀是.cc的网站wordpress 添加文章列表
  • 张家港安监站网址平面设计用什么软件最好
  • 顺义做网站同学网页设计心得体会200
  • 网站链接的基本形式广州网站改版设计公司
  • 天津seo网站管理婚礼设计素材网站
  • wordpress 建站贵阳网站建设建站解决方案
  • 如何做有后台的网站重庆森林
  • 网站建设 佛山如何让自己网站排名提高
  • 济南网站建设专业公司介绍自己做的网站的论文
  • 网站后台密码文件电话外呼系统怎么收费
  • 商务网站建设工程师wordpress 禁用谷歌
  • 河源和平县建设局网站怎么修改别人做的网站
  • 重庆网站空间费用做招聘网站怎么样
  • 廊坊做网站优化的公司阿里云做的网站空间