Вот мой код:Почему PriorityQueue работает неправильно?
public static List<int[]> getSkyline(int[][] buildings) {
List<int[]> res = new ArrayList<>();
PriorityQueue<int[]> heights = new PriorityQueue<>(buildings.length * 2, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0] == o2[0]) {
return o1[1] - o2[1];
} else {
return o1[0] - o2[0];
}
}
});
for (int[] h : buildings) {
heights.add(new int[]{h[0], -h[2]});
heights.add(new int[]{h[1], h[2]});
}
for (int[] height : heights) {
System.out.println(Arrays.toString(height));
}
return res;
}
public static void main(String[] args) {
getSkyline(new int[][]{{0, 2, 3}, {2, 5, 3}});
}
В моей идее, так как вход new int[][]{{0, 2, 3}, {2, 5, 3}}
, выход должен быть [0, -3][2, -3][2, 3][5, 3]
, но на самом деле это показывает [0, -3][2, 3][2, -3][5, 3]
. Может ли кто-нибудь сказать мне, что не так в моем коде? Заранее спасибо.