《剑指offer》刷题笔记(栈和队列):用两个栈实现队列
来源:互联网 发布:手机怎么修复网络 编辑:程序博客网 时间:2024/06/10 03:42
《剑指offer》刷题笔记(栈和队列):用两个栈实现队列
- 转载请注明作者和出处:http://blog.csdn.net/u011475210
- 代码地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
- 刷题平台:https://www.nowcoder.com/
- 题 库:剑指offer
- 编 者:WordZzzz
- 剑指offer刷题笔记栈和队列用两个栈实现队列
- 前言
- 题目描述
- 解题思路
- C版代码实现
- Python版代码实现
前言
栈是一个非常常见的数据结构,它在计算机领域被广泛应用,比如操作系统会给每个线程创建一个栈用来存储函数调用时各个函数的参数、返回地址及临时变量等。栈的特点是后进先出,即最后被压入(push)栈的元素会第一个被弹出(pop)。通常栈是一个不考虑排序的数据结构,所以我们需要O(n)时间才能找到栈中最大或者最小的元素。如果想要在O(1)时间内得到栈的最大或者最小值,我们需要对栈进行特殊的设计,以后会讲到。
队列是另外一种很重要的数据结构。与栈不同,队列的特点是先进先出。栈和队列虽然是特点针锋相对的两个数据结构,但有意思的是它们却相互联系,比如用两个栈实现队列,当然也可以用两个队列实现栈。
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路:
栈:后进先出(LIFO);
队列:先进先出(FIFO).
入队:将元素进栈A
出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;
如果不为空,栈B直接出栈
C++版代码实现:
class Solution{public: void push(int node) { stack1.push(node); } int pop() { int tmp; if(stack2.empty()) { while(!stack1.empty()) { tmp = stack1.top(); stack2.push(tmp); stack1.pop(); } } tmp = stack2.top(); stack2.pop(); return tmp; }private: stack<int> stack1; stack<int> stack2;};
Python版代码实现:
# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def push(self, node): # write code here self.stack1.append(node) def pop(self): # return xx if self.stack2 == []: while self.stack1: self.stack2.append(self.stack1.pop()) return self.stack2.pop()
系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~
完的汪(∪。∪)。。。zzz
阅读全文
0 0
- 《剑指offer》刷题笔记(栈和队列):用两个栈实现队列
- 剑指Offer:用两个栈实现队列(一刷)
- 剑指offer 7题 【栈和队列】用两个栈实现队列
- 剑指offer:用两个栈实现队列(栈和队列)
- 剑指offer-面试7:用两个栈实现队列(栈和队列)
- 剑指Offer系列---(9)用两个栈实现队列和用两个队列实现栈
- [剑指offer]用两个栈实现队列
- 【剑指offer】用两个栈实现队列
- 剑指offer--用两个栈实现队列
- 剑指Offer-用两个栈实现队列
- 剑指offer:用两个栈实现队列
- 《剑指offer》用两个栈实现队列
- 用两个栈实现队列(剑指offer)
- 剑指 offer:用两个栈实现队列
- 【剑指Offer】用两个栈实现队列
- 剑指offer-用两个栈实现队列
- 《剑指offer》-用两个栈实现队列
- 剑指offer 用两个栈实现队列
- Object超类的方法
- Python ( 1 ) ----- 简介
- 搭建java开发环境并使用MyEclipse创建java应用程序
- c++未使用参数的处理
- 003、java运算符
- 《剑指offer》刷题笔记(栈和队列):用两个栈实现队列
- 详谈LCA 在线(RMQ-ST) 和 离线(Tarjan)hdu2586为例
- Android Studio 运行程序中的Module时Instant Run requires 'Tools | Android | Enable ADB integration' to be en
- 【UML】UML图--行为图(活动图和状态图)
- 004、选择结构
- sadadas
- POJ3685
- Java数据类型与各数据库类型映射一览表
- 005、循环结构