PriorityQueue 和三元运算符

PriorityQueue and ternary operator

在method_one中:

  1. PriorityQueue<Integer> bigger = lower.size() > higher.size() ? lower : higher;
  2. PriorityQueue<Integer> smaller = lower.size() > higher.size() ? higher : lower;

在method_two中:

  1. PriorityQueue<Integer> bigger = lower.size() > higher.size() ? lower : higher;
  2. 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 有问题的评论此行添加:

>的倒数是<=,不是<