【问题标题】:node(int index) in LinkedListLinkedList 中的节点(整数索引)
【发布时间】:2018-05-11 17:35:18
【问题描述】:

谁能解释一下LinkedList中方法节点(int index)的逻辑。是什么让位偏移量为 1:

(index < (size >> 1))

方法:

Node<E> node(int index) {

    if `(index < (size >> 1)) {
        Node<E> x = first;
        for (int i = 0; i < index; i++)
            x = x.next;
        return x;
    } else {
        Node<E> x = last;
        for (int i = size - 1; i > index; i--)
            x = x.prev;
        return x;
    }
}

感谢您的回答!

【问题讨论】:

    标签: java collections linked-list bit-manipulation


    【解决方案1】:

    size &gt;&gt; 1 等价于size / 2

    我猜这个函数在索引x处找到node

    基本上,它所做的是将index 与节点总数进行比较。

    如果 index &lt; size/2 则搜索从 0size/2

    如果 index &gt; size/2 则搜索从 sizesize/2

    例如,如果您不比较 indexsize/2,您可能会遍历整个列表,即 O(n)。通过这样做,您可以将迭代减少一半。 (O(n/2))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2013-11-24
      • 2018-09-02
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多