本文要点:
- 使用
Set接口去除重复点 2.int[] range`循环变量的使用
使用Set接口去除重复点
在解决打点计数器问题时,我们遇到了一个挑战:如何高效地统计不重复的点数。Java中的Set接口提供了一种理想的方法来解决这个问题,因为它自动排除了重复的元素。这不仅简化了代码逻辑,还提高了程序的执行效率。
示例代码解析
public class Main {
public static int solution(int[][] inputArray) {
Set<Integer> points = new HashSet<>();
for (int[] range : inputArray){
int start = range[0];
int end = range[1];
for (int i = start ;i<=end;i++){
points.add(i);
}
}
return points.size();
}
我们首先创建了一个HashSet对象points来存储所有不重复的点。接着,我们使用一个外层循环遍历输入的每个范围,内层循环则负责将范围内的每个数字添加到points中。由于HashSet不允许重复元素,因此即使范围之间有重叠,最终的点数也是准确的。
int[] range循环变量的使用
在处理多组数据时,使用int[] range作为循环变量是一个很好的做法。它允许我们以简洁的方式访问每组数据的起始和结束值。这种方式不仅使代码更加清晰易读,还能减少错误的发生。每次迭代前,检查是否已经遍历完 inputArray 中的所有元素。如果还有未处理的元素,则继续执行循环体。
for (int[] range : inputArray) { int start = range[0]; int end = range[1]; for (int i = start ;i<=end;i++) { points.add(i); } }
内层循环for (int i = start ;i<=end;i++):遍历当前范围内的所有数字,并将它们添加到points中
MarsCode AI提供的帮助:
如果在没有AI的帮助下,我可能只会想到通过两两数组比较元素,然后更新其中一个数组,再用新的数组跟其他数组比较。这种方法不仅复杂,而且非常耗时。然而,通过AI提供的建议,我了解到了Set接口的高效性,从而找到了一个更简洁、更高效的解决方案。除此之外,还学习到了for循环的其他用法,大大提高学习效率!