![cb701df7c1798b8855b07e109729f612.png](https://i-blog.csdnimg.cn/blog_migrate/ebd32116c074c542f3736fa5e16c6b63.jpeg)
跟learnjiawa一起每天一道算法编程题,既可以增强对常用API的熟悉能力,也能增强自己的编程能力和解决问题的能力。算法和数据结构,是基础中的基础,更是笔试的重中之重。
- 不积硅步,无以至千里;
- 不积小流,无以成江海。
题目描述
剑指offer编程题第5题--两个栈实现队列,用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
我的想法
- 栈的特点是先进后出,队列的特点是先进先出
- 其实就是一个顺序的问题,最直接的想法就是,一个栈用作进栈,另外一个栈用作出栈。
- 比如将12345存到栈1,取出时,将其先从栈1弹出后又存到栈2,然后再弹出,这样顺序又正过来了。经过一次进栈和出栈顺序变化一次。
- 需要思考的问题是push()和pop()可能间隔出现,而不是像上面先全部push(),再全部pop()。
解题方法
![966103a720f3e0f5dfa811477b4adbfd.png](https://i-blog.csdnimg.cn/blog_migrate/f3b4046325565e58e91cd27c81b7b147.jpeg)
代码测试
![4c29b8204ddf7d399b2e8e99a5aae8af.png](https://i-blog.csdnimg.cn/blog_migrate/2a6997fde0a5b0f03f1758a1352ac073.jpeg)
![ed266041ae771bdc953855c91bb2183b.png](https://i-blog.csdnimg.cn/blog_migrate/40f91b11b4959ee00b2650783ba0df27.jpeg)
控制台输出结果:
![b4265d1745576ebc0babcb09e9a6e8b7.png](https://i-blog.csdnimg.cn/blog_migrate/61a04f21012220abe5fbd1fc4af6a4ad.jpeg)
总结
这种简单的数据结构题做着还是特别有意思的,可以锻炼自己的思维和编程能力,明天继续啦!
点击看剑指offer编程题打卡系列所有博客.
参考文献
[1]程杰. 大话数据结构. 北京:清华大学出版社, 2011.
更多
对我的文章感兴趣,持续更新中……
关注我微信公众号LearnJava,看其他系列博客:《爱上面试的凑弟弟》《跟凑弟弟一起修炼集合框架》、《Java多线程大闯关》、《Java IO流大闯关》。