Java 大根堆 小根堆
在Java中的堆可以使用PriorityQueue,默认是小根堆,
Queue<Integer> min = new PriorityQueue<>();
大根堆的写法:
max = new PriorityQueue<>(new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2){
return o2 - o1;
}
});
使用lambda表达式:
max = new PriorityQueue<>((x, y) -> (y - x));
补充:注意,考虑到Integer运算溢出的问题,可以这样写:
max = new PriorityQUeue<>(Comparator.reverseOrder());