当前位置:   article > 正文

力扣刷题(JAVA)常用数据结构总结_力扣用java刷题能用哪些数据结构

力扣用java刷题能用哪些数据结构

一、LinkedList

LinkedList类是双向列表(底层使用链表结构),列表中的每个节点都包含了对前一个和后一个元素的引用。

1.1特性

  1. LinkedList是双向链表实现的List
  2. LinkedList是非线程安全的
  3. LinkedList元素允许为null,允许重复元素
  4. LinkedList是基于链表实现的,因此插入删除效率高,查找效率低(虽然有一个加速动作)LinkedList是基于链表实现的,因此不存在容量不足的问题,所以没有扩容的方法
  5. LinkedList还实现了栈和队列的操作方法,因此也可以作为栈、队列和双端队列来使用

1.2、方法

offer方法:内部调用offerLast插入元素,返回插入结果true/false
add方法:  内部调用addLast实现
poll方法:  内部调用pollFirst实现
remove方法:内部调用removeFirst实现
peek方法:内部调用peekFirst实现
element方法:内部调用getFirst实现

栈方法:

pop方法:  内部调用removeFirst实现
push方法:内部调用addFirst实现

二、ArrayDeque

ArrayDeque是双端队列的线性实现 (底层使用数组结构)

2.1、特性

  1. 无容量大小限制,容量按需增长;
  2. 非线程安全队列,无同步策略,不支持多线程安全访问;
  3. 当用作栈时,性能优于Stack,当用于队列时,性能优于LinkedList
  4. 两端都可以操作
  5. 具有fail-fast特征
  6. 不能存储null
  7. 支持双向迭代器遍历

2.2、方法

队列方法:

offer方法:内部调用offerLast插入元素,返回插入结果true/false
add方法:  内部调用addLast实现
poll方法:  内部调用pollFirst实现
remove方法:内部调用removeFirst实现
peek方法:内部调用peekFirst实现
element方法:内部调用getFirst实现

栈方法:

pop方法:  内部调用removeFirst实现
push方法:内部调用addFirst实现

三、PriorityQueue

3.1、PriorityQueue是非线程安全的

Java提供了PriorityBlockingQueue(实现BlockingQueue接口)用于Java多线程环境。

3.2、PriorityQueue天生是小顶堆,那么如果我要大顶堆怎么办?

  1. // 默认实现了一个最小堆。
  2. Queue<Integer> priorityQueue = new PriorityQueue<>();
  3. // 实现最大堆
  4. Queue<ListNode> priorityQueue = new PriorityQueue<ListNode>(
  5. lists.size(),
  6. new Comparator<ListNode>(){
  7. @Override
  8. public int compare(ListNode o1, ListNode o2) { return o2.val-o1.val; }
  9. }
  10. );

参考文章

ArrayDeque详解_MrCoderr的博客-CSDN博客_arraydeque

Java 中的 LinkedList - 知乎

力扣刷题常用数据结构和方法(java版本)_人工智的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/935485
推荐阅读
相关标签
  

闽ICP备14008679号