java - PriorityQueue 和三元运算符

标签 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中:

  • 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/

    相关文章:

    java - Logback SMTPAppender 在特定时间只发送一封电子邮件,但有所有异常(exception)情况

    java - 使用 Nashorn 从脚本运行 Java

    amazon-web-services - 将某些工作流执行优先于其他工作流执行

    c++ - 如何在 STL priority_queue 中进行有效的优先级更新?

    erb 中的 Ruby 三元运算符?

    java - 将格式化的 .txt 文件读入变量 : Java

    java - Android sleep 时的互联网连接问题

    c++ - 优先队列的一种变体

    css - 使用三元运算符在 sass/React 中有条件地应用类

    php - 三元运算符左关联