现在用什么做网站,手机app下载安卓版,负责网站开发的岗位,网站建设公司模版题目
以数组 intervals 表示若干个区间的集合#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间#xff0c;并返回 一个不重叠的区间数组#xff0c;该数组需恰好覆盖输入中的所有区间 。
示例
输入#xff1a;intervals [[1,3],[2,6]…题目
以数组 intervals 表示若干个区间的集合其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间并返回 一个不重叠的区间数组该数组需恰好覆盖输入中的所有区间 。
示例
输入intervals [[1,3],[2,6],[8,10],[15,18]] 输出[[1,6],[8,10],[15,18]] 解释区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
解析
这道题的思路是拿到数组后要先按照二维数组的左端点排序保证数组是左端点有序的然后遍历数组如果当前遍历到的数组的左端点小于刚才遍历到的右端点则可以进行合并否则直接追加进答案即可
func merge(intervals [][]int) (ans [][]int) {slices.SortFunc(intervals, func(p, q []int) int {return p[0] - q[0]})for _, p : range intervals {// 遍历到的每一个数组m : len(ans)if m 0 p[0] ans[m-1][1] { // 遍历到的左端点小于已经遍历过的右端点可以合并ans[m-1][1] max(ans[m-1][1], p[1]) // 比如[[1,4], [2,3]]其实就不需要变化} else {ans append(ans, p)}}return
}