字节跳动问的其中一道题,也是leecode中的一道。
下面是题目。
给出一个区间的集合,请合并所有重叠的区间。
示例
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
我说了一个基础的思路就是遍历比较,我想到了这个可能说乱序的,顺便问了一下面试官,是乱序的。
然后,今天突然想到,为什么计算机就总是要各种遍历呢,数学往往都是一个公式就是算出一个精确的值。
可以先求每一个区间的平均值,和宽度,把平均值从小到大排序,然后求相邻的平均值之间的差 ,记为a(也就是距离),两个平均值的宽度的1/2加起来,记做b ,然后比较。