在method_one中:
-
PriorityQueue<Integer> bigger = lower.size() > higher.size() ? lower : higher;
-
PriorityQueue<Integer> smaller = lower.size() > higher.size() ? higher : lower;
在method_two中:
-
PriorityQueue<Integer> bigger = lower.size() > higher.size() ? lower : higher;
-
PriorityQueue<Integer> smaller = lower.size() < higher.size() ? lower : higher;
这里lower
是 Max_heap 优先级队列,并且 higher
是Min_heap优先级队列。
第 2 行和第 4 行相同,但得到错误的答案。 在第 4 行使用第 2 行时得到正确答案。 为什么会出现这种奇怪的行为,即使它们是相同的?
最佳答案
第2行:
if lower.size() == higher.size()
然后选择较低
第4行:
if lower.size() == higher.size()
然后选择更高
这就是区别。如果在使用较高优先级队列或较低优先级队列时出现问题,您会得到不同的答案。
来自@Andreas有问题的评论此行添加:
>
的倒数是 <=
,不是<
关于java - PriorityQueue 和三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51525514/