- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个 leetcode 问题中遇到了一个边缘案例,当我使用 new PriorityQueue<>(Collections.reverseOrder());
时它通过了,但是当我使用 new PriorityQueue<>((a, b) -> b - a);
解决方案未被接受。
leetcode题目是480. Sliding Window Median https://leetcode.com/problems/sliding-window-median/
代码如下:
class Solution {
public double[] medianSlidingWindow(int[] nums, int k) {
double[] res = new double[nums.length - k + 1];
PriorityQueue<Integer> left = new PriorityQueue<>(Collections.reverseOrder());
// This doesn't work:
//PriorityQueue<Integer> left = new PriorityQueue<>((a, b) -> b - a);
PriorityQueue<Integer> right = new PriorityQueue<>();
for (int i = 0; i < nums.length; i++) {
if (left.size() <= right.size()) {
right.add(nums[i]);
left.add(right.remove());
} else {
left.add(nums[i]);
right.add(left.remove());
}
if (left.size() + right.size() == k) {
double median;
if (left.size() == right.size()) {
median = (double)((long)left.peek() + (long)right.peek()) / 2;
} else {
median = (double)left.peek();
}
int start = i - k + 1;
res[start] = median;
if (!left.remove(nums[start])) {
right.remove(nums[start]);
}
}
}
return res;
}
}
我认为创建 maxHeap 的不同方法是相同的,我不知道为什么它会导致不同的结果,因为边缘情况很棘手。
最佳答案
b - a
可以上溢和下溢(假设 b
已经是 Integer.MIN_VALUE
)。使用 Integer.compare(b, a)
相反。
关于java - 创建maxHeap,Collections.reverseOrder() 和((a, b) -> b - a) 的区别;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70110145/
两者有区别吗?如果是,那是什么? 当我将它们用于优先级队列时,两者的排序方式相同。 最佳答案 如果您使用好的 IDE,很容易看到 Java 运行时库方法的源代码。例如。在 Eclipse 中,当光标位
在流的排序方法中使用 Comparator::reverseOrder 和 Comparator.reverseOrder() 有什么区别。 Stream streamText = Strea
int min=Collections.min(list, Collections.reverseOrder()); 执行reverseOrder函数后会输出什么? 最佳答案 这似乎是关于 Colle
我有一个类使用优先级队列按升序显示 5 个字符串。我知道要按降序排列,我可以使用“collections.reverseOrder()”方法。如何将此方法与以下代码一起使用? import java.
我正在创建一个简单的程序来了解 Java Comparator 类。我已经排序了 Arraylist按顺序排列,但现在我想按降序对列表进行排序,但在调用 .reverseOrder() 的位置时遇到问
我想按降序对现有 TreeMap 进行排序(或将值从 Map 复制到 TreeMap,这无关紧要),按值( double )排序。 我知道这里发布了很多类似的问题,但是据我所知,在 Java8 中您无
下面的 Stream 表达式工作得很好: Stream s = Stream.of("yellow","blue", "white"); s.sorted(Comparator.reverseOrd
我需要对 String[] 进行排序整数值按降序排列。我使用 String[] 因为数组的内容可以是字符串或整数。 要按降序排序, Arrays.sort(rows, Collections.reve
import java.util.*; class pqr { public static void main(String ab[]) { List ts=new ArrayList(); for(
考虑 sort 的重载定义之一方法来自 Array类: public static void sort(T[] a, Comparator c) 逆序排列数组的常用方法是传递Comparator由
我一直在分析 Java SE 8 中的 Comparator 接口(interface)。现在,我很想知道如何使用 reverseOrder()使用实现 Comparator 的类的方法界面。我写了一
根据 Java API 规范,Collections.reverseOrder 的签名是 public static Comparator reverseOrder() 并且方法描述中给出的例子说需
我在一个 leetcode 问题中遇到了一个边缘案例,当我使用 new PriorityQueue<>(Collections.reverseOrder()); 时它通过了,但是当我使用 new Pr
我在一个 leetcode 问题中遇到了一个边缘案例,当我使用 new PriorityQueue<>(Collections.reverseOrder()); 时它通过了,但是当我使用 new Pr
所以我有一行代码如下: Collections.sort(lists, new SpecificComparator()); 工作正常。但是当我尝试按降序获取它时...... Collections.
这个问题已经有答案了: Comparator.nullsFirst with null-safe-comparator (3 个回答) 已关闭 4 年前。 当我尝试这个时: if (serviceEn
我是一名优秀的程序员,十分优秀!