概述
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时)常用函数记得三个就行
- 压入:deque.push(n) //这里n可以为任何对象!包括自定义类和构造体
- 弹出:deque.pop(n) //弹出后立刻不存在且不可找回,一般建个对象接好
- 查看栈顶元素:deque.pop(n) //只是查看栈顶元素,不删除
- 是否为空: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
两者区别可以简单的理解为LinkedList就是链表,ArrayList就是数组,Vector也是数组,ArrayList是Vector数组的升级版,效率更高。随机访问数组快,增删链快。另外“ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间”,简单的说,“查操作时用ArrayList,进行增删操作的时候最好用LinkedList”
虽然常用于Deque的实例化,但也可以独自实例化,当列表使用
ArrayList<String> sites = new ArrayList<>();
常用函数方法
Arrayliat | LinkedList |
---|---|
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>>();
最后
以上就是生动小蝴蝶为你收集整理的leetcode总结(一)Deque,Qeque,ArrayList,LinkedList数据结构的全部内容,希望文章能够帮你解决leetcode总结(一)Deque,Qeque,ArrayList,LinkedList数据结构所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复