leetcode总结(一)Deque,Qeque,ArrayList,LinkedList数据结构

7 篇文章 0 订阅
4 篇文章 0 订阅

leetcode总结(一)Deque,Qeque,ArrayList,LinkedList数据结构

leetcode做到了不少的题要用堆栈,列表,树,这些结构都和上面四种结构息息相关,很容易搞混,这里笔记总结一下区别

Deque和Queue

两个应该都是接口类,而LinkedList和ArrayList作为实现。另外,建议使用Deque。

二者常用于设立堆栈,常见实例如树的遍历(如leetcode-173)。

实例化方法:

Queue<element_type> queue = new LinkedList()
Deque<element_type> deque = new LinkedList()
// Deque 意为 double ended queue,双终点的队列

作为栈(stack时)常用函数记得三个就行

  1. 压入:deque.push(n) //这里n可以为任何对象!包括自定义类和构造体
  2. 弹出:deque.pop(n) //弹出后立刻不存在且不可找回,一般建个对象接好
  3. 查看栈顶元素:deque.pop(n) //只是查看栈顶元素,不删除
  4. 是否为空:deque.isEmpty() // 返回true or false

还有诸如addLast(n),addFirst(n)之类的,更详细函数和Queue和Deque对比见下链接

https://blog.csdn.net/devnn/article/details/82716447

ArrayList 和 LinkedList和vector

我觉得不会比这位兄弟讲的更好了,这张图清晰的讲清楚了几个类的关系,可以看到实现Deque类最好实例化为LinkedList

https://blog.csdn.net/eson_15/article/details/51145788

img

两者区别可以简单的理解为LinkedList就是链表,ArrayList就是数组,Vector也是数组,ArrayList是Vector数组的升级版,效率更高。随机访问数组快,增删链快。另外“ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间”,简单的说,“查操作时用ArrayList,进行增删操作的时候最好用LinkedList”

虽然常用于Deque的实例化,但也可以独自实例化,当列表使用

 ArrayList<String> sites = new ArrayList<>();

常用函数方法

ArrayliatLinkedList
get(int index)get(int index)
set(int index, E element)set(int index, E element)
add(int index, E element)add(int index, E element)
remove(int index)remove(int index)

建议看这个链接,有部分源码实现和实验https://blog.csdn.net/eson_15/article/details/51145788
另外 有时候会碰上二位数组,matrix很容易,用Arraylist or List实例化为:

List<Integer> t = new ArrayList<Integer>();
List<List<Integer>> ans = new ArrayList<List<Integer>>();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值