在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行时得到正确答案。 为什么这种奇怪的行为,即使它们是相同的?
答案 0 :(得分:1)
第 2 行:
if lower.size() == higher.size()
,然后选择下
第 4 行:
if lower.size() == higher.size()
然后选择更高
那就是区别。如果在使用较高优先级的队列或较低优先级的队列时发生错误,则会得到不同的答案。
在有问题的@Andreas条评论中,此行添加了:
>
的倒数是<=
,而不是<