如何最有效地在LinkedList中找到max和min元素?

时间:2012-08-21 11:05:00

标签: java data-structures

我在Java中有一个链表,比如LinkedList<T> list = new LinkedList<T>();,我需要最有效地找到最大/最小元素,我该怎么做?

如何使用Collections.max()函数从链接列表中查找max元素?这个函数的时间复杂度是多少?

4 个答案:

答案 0 :(得分:6)

如果您希望它更低,则时间复杂度为O(n),例如O(1)您需要使用不同的数据结构,例如TreeSet。

  

如何对LinkedList

使用Collections.max()
List<Integer> list = ...
Integer max = Collections.max(list);

答案 1 :(得分:1)

ArrayList<Integer> numbers = new ArrayList<Integer>();
/* fill with values */
Integer max = Collections.max(numbers);

答案 2 :(得分:0)

Java Doc

  

此方法遍历整个集合,因此需要与集合大小成比例的时间。 (O(n))的

<强>用法

public class Test
{
  public static void main(String args[])
  {
    // create an LinkedList object
    LinkedList<Integer> list = new LinkedList<Integer>();

    // Add elements to LinkedList
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);

    //Use Max Method
    System.out.println(Collections.max(list));
}
}

答案 3 :(得分:0)

您还可以使用stream.max()来获取LinkedList的最大值

LinkedList<Integer> linkedList = new LinkedList<>();

linkedList.add(1); linkedList.add(2);
linkedList.add(3); linkedList.add(4);

linkedList.stream().max(Integer::compareTo).ifPresent(System.out::println);

Output: 4