2022-02-16 「数据结构刷题」

瓦伦廷恩日的题目真的对single dog非常不友好了,看题目时间复杂度要log n,也很清晰地知道要用二分法做,就不记录了。

今天这题也是简单题,链表反转,没有花里胡哨的算法,就是通过压栈的思路,把链表倒序。递归不太熟悉,Stack,ArrayDeque,LinkedList都可以作为栈使用,所以这里具体记录下各自的入栈出栈方法和对应的性能情况。

类继承树


类继承树

由继承树看出,三者都是Collection的间接实现类。

ArrayDeque实现Deque接口,Stack继承于Vector,LinkedList实现Deque与List接口。

区别

底层数据存储方式
入/出/查看方法
线程安全

性能选项

通常情况下,不推荐使用Vector以及其子类Stack

1.需要线程同步:使用Collections工具类中synchronizedXxx()将线程不同步的ArrayDeque以及LinkedList转换成线程同步。

2.频繁的插入、删除操作:LinkedList

3.频繁的随机访问操作:ArrayDeque

4.未知的初始数据量:LinkedList

你可能感兴趣的:(2022-02-16 「数据结构刷题」)