aahao
2023-05-12 11:15:14 +08:00
来自 ChatGPT:
在 Java 中,可以使用不同的方式实现将一组数字分组的逻辑。以下是一种可能的优雅实现方式:
import java.util.ArrayList;
import java.util.List;
public class NumberGrouping {
public static void main(String[] args) {
int[] numbers = {20, 170, 30, 80, 60, 129, 49}; // 输入的数字数组
List<List<Integer>> groups = groupNumbers(numbers); // 分组后的结果
// 打印每个分组
for (int i = 0; i < groups.size(); i++) {
System.out.println("Group " + (i + 1) + ": " + groups.get(i));
}
}
public static List<List<Integer>> groupNumbers(int[] numbers) {
List<List<Integer>> groups = new ArrayList<>();
List<Integer> currentGroup = new ArrayList<>();
int sum = 0;
for (int number : numbers) {
if (sum + number <= 200) {
// 将数字添加到当前分组
currentGroup.add(number);
sum += number;
} else {
// 当前分组已满,添加到结果中,并创建新的分组
groups.add(currentGroup);
currentGroup = new ArrayList<>();
currentGroup.add(number);
sum = number;
}
}
// 添加最后一个分组
groups.add(currentGroup);
return groups;
}
}
这个代码示例中,我们首先定义了一个 groupNumbers 方法,它接受一个整数数组作为输入,并返回一个包含分组结果的二维列表。然后,在 main 方法中,我们声明了一个示例数字数组,并调用 groupNumbers 方法来获取分组结果。
在 groupNumbers 方法中,我们使用了两个列表:groups 用于存储最终的分组结果,currentGroup 用于临时存储当前正在构建的分组。我们还使用了一个变量 sum 来跟踪当前分组中数字的总和。
我们遍历输入的数字数组,并根据数字的总和是否超过 200 来判断是否需要创建新的分组。如果总和未超过 200 ,则将数字添加到当前分组,并更新总和;否则,将当前分组添加到结果列表中,然后创建一个新的分组,将当前数字添加到新的分组中,并更新总和。
最后,我们将最后一个分组添加到结果列表中,并返回最终的分组结果。
这种实现方式简洁明了,并且逻辑清晰,可以满足将一组数字按照总和不超过 200 的条件进行分组的要求。