瓦伦廷恩日的题目真的对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