You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算3个链表的平均值并以LinkedList格式返回的面试题求解

解法思路

首先明确该题的两种常见考察场景,分别对应不同的处理逻辑:

场景1:三个链表长度相同,对应位置节点求平均,输出同长度的结果链表

处理逻辑:

  • 同时遍历三个链表的当前节点
  • 每次取出三个节点的数值计算平均值,存入结果链表
  • 直到三个链表的节点全部遍历完成

场景2:统计三个链表所有节点的总平均值,输出仅含一个节点的结果链表

处理逻辑:

  • 分别遍历三个链表,累加所有节点的数值总和,统计所有节点的总数量
  • 计算总平均值后存入结果链表返回

代码示例(Java实现)
import java.util.LinkedList;

public class ThreeLinkedListAverage {
    // 场景1实现:对应位置求平均
    public static LinkedList<Double> avgCorresponding(LinkedList<Integer> list1, LinkedList<Integer> list2, LinkedList<Integer> list3) {
        LinkedList<Double> result = new LinkedList<>();
        // 校验长度是否一致
        if (list1.size() != list2.size() || list2.size() != list3.size()) {
            throw new IllegalArgumentException("三个链表长度不一致");
        }
        for (int i = 0; i < list1.size(); i++) {
            double avg = (list1.get(i) + list2.get(i) + list3.get(i)) / 3.0;
            result.add(avg);
        }
        return result;
    }

    // 场景2实现:所有节点求总平均
    public static LinkedList<Double> avgTotal(LinkedList<Integer> list1, LinkedList<Integer> list2, LinkedList<Integer> list3) {
        long sum = 0;
        int count = 0;
        for (int num : list1) {
            sum += num;
            count++;
        }
        for (int num : list2) {
            sum += num;
            count++;
        }
        for (int num : list3) {
            sum += num;
            count++;
        }
        LinkedList<Double> result = new LinkedList<>();
        if (count == 0) {
            result.add(0.0);
            return result;
        }
        result.add((double) sum / count);
        return result;
    }
}

注意事项
  • 如果题目没有明确说明对应位置平均还是总平均,面试时可以先和面试官确认需求,避免理解偏差
  • 数值计算时注意整数溢出问题,求和可以用long类型存储,平均值计算要转成浮点数避免整数截断
  • 边界情况要处理:比如空链表的情况,避免空指针或者除零错误

内容的提问来源于stack exchange,提问作者Naz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:18:00