java算法常用
PriorityQueue
与普通队列不同,优先队列元素是按排序顺序检索的。
假设我们想以升序检索元素。在这种情况下,优先队列的头是最小的元素。检索到该元素后,下一个最小的元素将成为队列的头。
PriorityQueue<Integer> numbers = new PriorityQueue<>(); |
这里,我们创建了一个没有任何参数的优先级队列。**在这种情况下,优先级队列的头是队列中最小的元素。**元素将按升序从队列中移除。
comparator
import java.util.PriorityQueue; |
在以上所有示例中,优先级队列元素都是按自然顺序(升序)检索的。 但是,我们可以自定义此顺序。
为此,我们需要创建自己的comparator类,它实现了Comparator接口。
如果你是直接想创建大顶堆,就是直接比较存入的数据的大小,那么这样写就行,大顶堆就是后面减前面的
PriorityQueue<Integer>pq=new PriorityQueue<>((o1,o2)->o2.compareTo(o1)); |
如果你想以别的,比如这个key在map里对应的value的大小,然后建立大顶堆,那么应该重写compare
PriorityQueue<Integer>pq=new PriorityQueue<>(new Comparator<Integer>(){ |
List<int[]>
刷力扣遇到了这种用法,
List<int[]> list = new ArrayList<int[]>(); |
是一个列表,其中每个元素都是一个int类型的数组,这个列表可以用来存储一组整数数组,每个数组可以有不同的长度和元素。
转成int[][][][][][][] [],因为有的傻逼题目会要你写成int [] [] 返回
list.toArray(new int[list.size()][]); |
Arrays.asList()
把数组转成List
String[] myArray = { "Apple", "Banana", "Orange" }; |
Arrays.sort
重写排序规则
Arrays.sort(nums,new Comparator<String>(){ |