博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer_用两个栈实现队列
阅读量:2107 次
发布时间:2019-04-29

本文共 757 字,大约阅读时间需要 2 分钟。

题目

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
知识点
栈:先进后出
队列:先进先出
思路
最开始认为这两个性质很好互相转换,但是很模糊,就需要在草稿纸上写出实例才能摸清楚关系。
最重要的就是FIFO和FILO互相转化:
每次都往stack1中push数字;(例此时有stack1{1,2,3,4})
当需要pop时:
1.若stack2中没有数字,则依次将stack1中的数字pop出来,push进stack2{4,3,2,1};
2.当stack2中有数字时,直接pop,pop后:stack2{3,2,1};pop出4,实现先进先出;
再需要push数字时,依旧往stack1中push,其他操作同上。
代码

import java.util.Stack;public class Solution {
Stack
stack1 = new Stack
(); Stack
stack2 = new Stack
(); public void push(int node) {
stack1.push(node); } public int pop() {
if(stack2.size()<=0){
while(stack1.size()>0){
stack2.push(stack1.pop()); } } return stack2.pop(); }}

转载地址:http://dffef.baihongyu.com/

你可能感兴趣的文章
剑指offer 33.第一个只出现一次的字符
查看>>
剑指offer 34.把数组排成最小的数
查看>>
剑指offer 35.数组中只出现一次的数字
查看>>
剑指offer 36.数字在排序数组中出现的次数
查看>>
剑指offer 37.数组中重复的数字
查看>>
剑指offer 38.丑数
查看>>
剑指offer 39.构建乘积数组
查看>>
剑指offer 57. 删除链表中重复的结点
查看>>
剑指offer 58. 链表中环的入口结点
查看>>
剑指offer 59. 把字符串转换成整数
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
leetcode 热题 Hot 100-3. 合并两个有序链表
查看>>
leetcode 热题 Hot 100-4. 对称二叉树
查看>>
Leetcode C++《热题 Hot 100-12》226.翻转二叉树
查看>>
Leetcode C++《热题 Hot 100-13》234.回文链表
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-19》543.二叉树的直径
查看>>