第 1 天栈与队列(简单)

剑指 Offer 09. 用两个栈实现队列

难度简单

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

示例 1:

输入:
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
输出:[null,null,3,-1]

解题思路提示:

class CQueue {LinkedList<Integer> A,B;public CQueue() {A =new LinkedList<Integer>();B =new LinkedList<Integer>();}public void appendTail(int value) {//队列尾部插入整数A.add(value);}public int deleteHead() {// 队列头部删除整数的功能if(!B.isEmpty()){return B.removeLast();}//队列中没有元素,deleteHead 操作返回 -1if(A.isEmpty()){return -1;}while(!A.isEmpty()){B.add(A.removeLast());}return B.removeLast();}
}

如果你使用Stack的方式来做这道题,会造成速度较慢; 原因的话是Stack继承了Vector接口,而Vector底层是一个Object[]数组,那么就要考虑空间扩容和移位的问题了。 可以使用LinkedList来做Stack的容器,因为LinkedList实现了Deque接口,所以Stack能做的事LinkedList都能做,其本身结构是个双向链表,扩容消耗少

但是,Vector Stack 这些 Java 集合框架中已经被“遗弃”, Stack 已经被 Java 官方说明不推荐使用了

Stack知识补充

结构:队列数组

特点:线程安全,是Vector的子类,有自己特有的方法

boolean empty()
          测试堆栈是否为空。
 E peek()
          查看堆栈顶部的对象,但不从堆栈中移除它。
 E pop()
          移除堆栈顶部的对象,并作为此函数的值返回该对象。
 E push(E item)
          把项压入堆栈顶部。
 int search(Object o)
          返回对象在堆栈中的位置,以 1 为基数。

LinkedList知识补充

结构:双向链表

特点:线程不安全,插入删除快,查询慢

常用方法:

名称

概述

备注

add(E e)

添加

向集合中最后添加一个元素

add(int index ,E e)

插入

addAll(Collection c)

批量添加

addFirst(E e)

插入到第一个

addLast(E e)

插入到最后一个

同add(E e)

remove(int index)

删除

按照索引删除

remove(E e)

删除

按照内容删除

removeFirst()

移除并返回此列表的第一个元素

removeLast()

移除并返回此列表的最后一个元素

clear()

清空

E e = get(int index)

获取到指定位置(索引)的元素

E e = getFirst()

获取第一个

E e = getLast()

获取最后一个

set(int index,E e)

修改

修改指定位置的元素

int size = size()

获取集合长度

Object[]array = list.toArray()

将集合转换成数组

 E pop()
          从此列表所表示的堆栈处弹出一个元素。
 void push(E e)
          将元素推入此列表所表示的堆栈。

用作复习参考博客,不喜勿喷!

一把王者荣耀的时间打卡剑指 Offer简单入门题相关推荐

  1. 挑战一天(12h)刷完《剑指offer》67题

    提前说明,挑战的人不是我. 大家周末好,我是爱上 B 站的小吴,最近一段时间我在网站 AlgoMooc 录制剑指 Offer 的视频,同时上传了一部分到 B 站,基于推荐算法,B 站疯狂的给我推送如何 ...

  2. 《剑指offer》刷题总结

    从三月初开始刷剑指offer上面的题,到现在花了近二十天的时间终于刷完了.应该说,掌握上面的技巧应付一些公司面试题和小公司的笔试题是完全没有问题的.之前参加一个公司笔试,算法题就有一题是剑指offer ...

  3. 剑指offer第41题 和为s的两个数

    剑指offer第41题 和为s的两个数 #include<iostream> using namespace std;bool sumk(int*list,int length,int*n ...

  4. 《剑指offer》刷题笔记(发散思维能力):求1+2+3+...+n

    <剑指offer>刷题笔记(发散思维能力):求1+2+3+-+n 转载请注明作者和出处:http://blog.csdn.net/u011475210 代码地址:https://githu ...

  5. 《剑指offer》刷题——【链表】从尾到头打印链表

    <剑指offer>刷题--[链表]-<从尾到头打印链表> 问题分析: 递归实现: 1. 无返回值 2. 有返回值(ArrayList) 问题分析: 从头到尾打印链表比较简单,那 ...

  6. 《剑指Offer》刷题之最小的K个数

    <剑指Offer>刷题之最小的K个数 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 给定一个数组,找出其中最小的K个数. ...

  7. 《剑指offer》75题 C++详细题解

    目录 简单: 剑指 Offer 03. 数组中重复的数字 map: unordered_map: 原地交换 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 出栈入栈 双 ...

  8. 《牛客网 剑指Offer前20题》

    <剑指Offer> 牛客网 前20道题 前言知识 面试题1:二维数组中的查找 面试题2:二维数组中的查找 面试题3:从头到尾打印链表 面试题4:重建二叉树 ***** 面试题5:两个栈实现 ...

  9. 剑指offer 面试32题

    面试32题: 题目:从上到下打印二叉树 题:不分行从上到下打印二叉树 解题代码: # -*- coding:utf-8 -*- # class TreeNode: # def __init__(sel ...

最新文章

  1. redis主备同步(使用)
  2. docker 错误 request canceled while waiting for connection 或 TLS handshake timeout 解决方案
  3. python3 deque(双向队列)
  4. 安庆移动开展VoLTE网络测试
  5. 01_什么是one-hot编码、one-hot编码过程详解、为什么需要one-hot编码?one-hot编码的优缺点、使用sklearn中的API举例
  6. 你好,C++(2)1.3 C++世界版图1.4 如何学好C++
  7. 浅谈auto与decltype函数的区别
  8. [ mongoDB ] - mongoDB的基本操作
  9. jsoup爬虫简书首页数据做个小Demo
  10. ES6新特性_Promise对象的catch方法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记029
  11. kali创建文件_kali 创建快捷方式的方法
  12. MBR分析(1): 代码获取与初始化
  13. Python print 不换行,Print Without Newline In Python
  14. stm32使用查表法将utf8转gbk,编码表数组存放在外部flash中
  15. html使用css居中
  16. 小学计算机专业说课稿模板,小学信息技术计算机的小管家说课稿
  17. 浙江大学公开课《王阳明心学》
  18. tomcate免安装版内存设置
  19. better-scroll基本使用
  20. 说明书丨链霉亲和素相关研究

热门文章

  1. 搭建Nginx+Vsftp图片、视频、音频服务器
  2. linux p2p 传输工具,用ipp2p在Linux上封杀bt等p2p传输(已试验成功)
  3. 做好自己,经营人际关系
  4. linux创建数据库Oracle用户,linux下ORACLE数据库中创建新用户
  5. 服装供应链的最优方法
  6. Pytest.fixture
  7. 怎么看电脑哪个应用使用流量最高?
  8. spring data jpa 查询自定义字段,转换为自定义实体
  9. Golang中单引号、双引号、反引号
  10. python爬新闻并保存_利用python的scrapy爬取新浪新闻保存至txt