>[danger]算法:合并共同区间 合并共同区间是一个常见的算法问题,通常用于将多个区间合并成尽可能少的区间,使得每个区间都不会重叠。以下是算法的一种实现: 1. 首先将所有区间按照起始位置从小到大排序。 2. 将第一个区间加入结果区间列表中。 3. 遍历所有区间,如果当前区间的起始位置小于等于结果区间列表中最后一个区间的终止位置,则将当前区间的终止位置更新为结果区间列表中最后一个区间和当前区间终止位置的较大值;否则将当前区间加入结果区间列表中。 4. 遍历完成后,结果区间列表中的所有区间就是合并后的区间。 以下是用 JavaScript 实现合并共同区间算法的代码: ```javascript function mergeIntervals(intervals) { // 按起始位置排序 intervals.sort((a, b) => a[0] - b[0]); let result = [intervals[0]]; for (let i = 1; i < intervals.length; i++) { let interval = intervals[i]; // 如果当前区间的起始位置小于等于结果区间列表中最后一个区间的终止位置 if (interval[0] <= result[result.length - 1][1]) { result[result.length - 1][1] = Math.max(result[result.length - 1][1], interval[1]); // 更新终止位置 } else { result.push(interval); // 加入新区间 } } return result; } ``` 其中,`intervals` 是一个数组,表示待合并的区间,每个区间用一个包含起始位置和终止位置的数组表示。例如,`[[1,3],[2,6],[8,10],[15,18]]` 表示四个区间 `[1,3]`、`[2,6]`、`[8,10]`、`[15,18]`。函数会返回一个数组,表示合并后的区间。 例如,对于上述示例输入,函数会返回 `[[1,6],[8,10],[15,18]]`,表示三个合并后的区间 `[1,6]`、`[8,10]`、`[15,18]`。