我是靠谱客的博主 生动小蝴蝶,最近开发中收集的这篇文章主要介绍leetcode总结(一)Deque,Qeque,ArrayList,LinkedList数据结构,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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>>();

最后

以上就是生动小蝴蝶为你收集整理的leetcode总结(一)Deque,Qeque,ArrayList,LinkedList数据结构的全部内容,希望文章能够帮你解决leetcode总结(一)Deque,Qeque,ArrayList,LinkedList数据结构所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部