原创约 12499 字大约 42 分钟
通用实现
我先提供一个单调队列结构的通用实现,这里涉及 Java 的泛型,E
就代表任意类型,本站开头的 Java 语言基础 有讲过,这里就不细讲了。
E extends Comparable<E>
的意思是这个类型 E
需要实现 Comparable
接口,即类型 E
是可比较的,比如 Integer, String
这种实现了 compareTo
方法的类型。原因也很好理解,因为你要求队列中元素的最值嘛,所以元素当然得是有大小之分(可比较)的。
我们原先的简陋实现包含了 max
方法的实现,其原理是在底层维护了一个队列 maxq
,维护这个队列中从尾部到头部的元素单调递增。