单端队列
leetcode中大部分是使用单端队列,一个口进,一个口出
底层使用链表实现
判断数据结构的好坏要对比四个操作
1、访问Access
时间复杂度是O(N),需要遍历才能找到要访问的元素。
2、搜索Search
时间复杂度是O(N)。和访问一样,也是需要遍历才能找到对应的元素。
3、插入Insert
时间复杂度是O(1)。只能在队尾插入元素。
4、删除Delete
时间复杂度为O(1)。只能在队头删除元素。
Java队列常用操作
1、创建队列
Queue<Integer>
queue = new LinkedList<>();
Queue是Java中的队列接口,通常使用链表来实现这个接口,因为队列经常要插入删除,链表的插入删除时间复杂度比较小。
2、添加元素
queue.add(1);
queue.add(2);
queue.add(3);
时间复杂度是O(1)。
3、获取元素
int head = queue.peek();
获取队列头元素,即当前最先出队列的元素。时间复杂度是O(1)。
4、删除元素
int head = queue.poll();
删除队列头元素ÿ