PriorityQueue和三元运算符

时间:2018-07-25 18:29:26

标签: java priority-queue 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行时得到正确答案。 为什么这种奇怪的行为,即使它们是相同的?

1 个答案:

答案 0 :(得分:1)

2 行:

if lower.size() == higher.size(),然后选择

4 行:

if lower.size() == higher.size()然后选择更高

那就是区别。如果在使用较高优先级的队列或较低优先级的队列时发生错误,则会得到不同的答案。

在有问题的@Andreas条评论中,此行添加了:

>的倒数是<=,而不是<