56.M 合并区间
Problem: 56. 合并区间
思路
先把区间按照左边界进行排序,排序后有重叠的区间必定是相邻的。
遍历排序后的区间,先把第一个区间加入结果中,然后遍历后续区间:
如果遍历到的区间跟结果中的最后一个区间有重叠,而且当前区间的右边界大于结果中最后一个区间的右边界,则把结果中最后一个区间的右边界更改为当前区间的右边界。
否则,把当前区间加入结果。
Code
func merge(intervals [][]int) [][]int {
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][0] < intervals[j][0]
})
var ans [][]int
ans = append(ans, intervals[0])
for i := 1; i < len(intervals); i++ {
left := intervals[i][0]
right := intervals[i][1]
lastRight := ans[len(ans)-1][1]
if left <= lastRight {
if right > lastRight {
ans[len(ans)-1][1] = right
}
} else {
ans = append(ans, intervals[i])
}
}
return ans
}
Last updated
Was this helpful?