打点计数器的区间合并|豆包MarsCode AI刷题

32 阅读1分钟

solution方法说明

solution方法是整个功能的核心入口,接收一个二维整数数组inputArray作为参数,代表多个数字范围。

  1. 区间排序:首先调用Arrays.sort方法,利用自定义比较器Comparator.comparingInt(a -> a[0])按照区间的起始数字对inputArray进行从小到大排序。这一步为后续合并重叠区间做准备,使得相邻区间更便于比较和处理。
  2. 区间合并:接着调用mergeIntervals方法,将排序后的区间进行合并操作。通过遍历排序后的区间数组,判断相邻区间是否重叠,若重叠则更新前一区间的结束数字为两区间结束数字中的较大值,若不重叠则将新区间添加到合并后的区间数组中,最终得到合并后的区间数组。
  3. 打点数量计算:遍历合并后的区间数组,针对每个区间,使用interval[1] - interval[0] + 1来计算区间内不同数字的个数,将这些个数累加存储在count变量中,最后返回count作为打点的总数量。

mergeIntervals方法说明

此方法用于具体执行区间合并的操作。对于长度小于等于 1 的输入区间数组,直接返回原数组。否则,初始化一个新的二维数组merged用于存放合并后的区间,将第一个区间先放入其中,然后从第二个区间开始依次与已放入merged中的前一区间比较,根据是否重叠决定是合并还是添加新的区间,最后返回实际有效的合并后区间数组。