【问题标题】:Finding mean in linked list在链表中查找均值
【发布时间】:2015-01-22 15:25:09
【问题描述】:

我知道在单链表中只通过一次就可以找到中间元素的方法。

有没有办法找到列表中元素的平均值

【问题讨论】:

  • 我的“意思”是什么意思?列表元素包含什么?内容可以加在一起吗?
  • mean 通常表示平均值。你是说中位数吗?或者只是列表中间的元素(根据列表大小)?
  • 您使用 2 个指针对其进行迭代;一次,每 2 个元素和一个一个一个地进行一次;当第一个到达末尾时,第二个是中间
  • 啊,是的,我知道如何找到中间元素。正如@user1121883 给出的方法。但这是中位数。
  • 我想找到具有 n 个元素的链表的均值。我不知道它在哪里结束,我只有下一个元素的链接。与找到中间元素的方式类似,有没有一种方法可以有效地(例如,不仅仅是将所有元素转储到数组中)找到所有元素的平均值。是的,当然,它们可以加在一起

标签: language-agnostic linked-list singly-linked-list


【解决方案1】:

根据您的 cmets,我想您问的是算术平均值 (http://en.wikipedia.org/wiki/Mean#Arithmetic_mean_.28AM.29) 此外,如果您知道有多少元素,您可以摆脱计数。

    Node current = root;
    double sum = 0;
    int count = 0;
    while (current != null) {
        sum += current.el;
        count++;
        current = current.next;
    }
    System.out.println(sum/count);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多