Java中字符串ArrayList按三元素分组计算最小乘积的实现问题
解决方案
你可以通过两种方式实现需求,都不需要嵌套循环,单循环即可完成所有分组处理:
- 先创建一个新的整数列表存储最终结果
- 分组处理逻辑完全匹配你给出的计算规则,输出结果和示例一致
方案1:步长为3的普通for循环(推荐,索引逻辑清晰)
直接替换你原来的for (String st : purgedList)代码块即可:
// 存储最终输出结果 List<Integer> resultList = new ArrayList<>(); // 每次循环步进3,刚好对应每组3个元素 for (int i = 0; i < purgedList.size(); i += 3) { // 边界判断:剩余元素不足3个时跳过,避免索引越界 if (i + 2 >= purgedList.size()) { break; } // 字符串转整数 int a = Integer.parseInt(purgedList.get(i)); int b = Integer.parseInt(purgedList.get(i + 1)); int c = Integer.parseInt(purgedList.get(i + 2)); // 计算三个两两乘积 int p1 = a * b; int p2 = a * c; int p3 = b * c; // 取最小值存入结果,也可替换为你想用的Collections.min写法:Collections.min(Arrays.asList(p1,p2,p3)) int minProduct = Math.min(Math.min(p1, p2), p3); resultList.add(minProduct); } // 验证输出 System.out.println(resultList);
方案2:增强for循环实现(适配你原有的循环写法)
如果你不想修改原有增强for循环的结构,可以用临时列表攒够3个元素就处理一次:
List<Integer> tempGroup = new ArrayList<>(); List<Integer> resultList = new ArrayList<>(); for (String st : purgedList) { tempGroup.add(Integer.parseInt(st)); // 凑齐3个元素就计算最小值 if (tempGroup.size() == 3) { int p1 = tempGroup.get(0) * tempGroup.get(1); int p2 = tempGroup.get(0) * tempGroup.get(2); int p3 = tempGroup.get(1) * tempGroup.get(2); resultList.add(Math.min(Math.min(p1, p2), p3)); // 清空临时列表存下一组 tempGroup.clear(); } }
内容的提问来源于stack exchange,提问作者legenw84it
相关产品推荐
相关产品推荐

