Java实现五数取四求和最值仅通过5个测试用例排查求助
问题排查结果
核心错误点
- 变量类型选择错误导致整数溢出:你的代码中
sum、min、max都使用了int类型,Java中int的最大存储值为2147483647,当输入的5个正整数总和超过这个阈值时,计算结果会溢出出错,这和题目要求的「按长整数格式输出」的要求不符。 - 核心计算逻辑(总和减去最大值得到4数最小和、总和减去最小值得到4数最大和)是正确的,无需调整。
修正后代码
public static void miniMaxSum(List<Integer> arr) { Collections.sort(arr); long sum = 0; long smallest = arr.get(0); long largest = arr.get(4); for (int i = 0; i < arr.size(); i++) { sum += arr.get(i); } long min = sum - largest; long max = sum - smallest; System.out.print(min + " " + max); }
补充说明
你自测时未复现问题是因为使用的测试用例数值总和没有超出int的存储上限,HackerRank的测试用例包含了大数值场景,触发了溢出错误。
内容的提问来源于stack exchange,提问作者user16225412
相关产品推荐
相关产品推荐

