1.二维数组按照第一列大小排序(升序)
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][0] < intervals[j][0]
})
2.二维数组第一列相同时,按照第二列大小排序(升序)
sort.Slice(intervals, func(i, j int) bool {
if intervals[i][0] == intervals[j][0] {
return intervals[i][1] < intervals[j][1]
}else {
return intervals[i][0] < intervals[j][0]
}
})
3.力扣:56. 合并区间
![](https://img-blog.csdnimg.cn/edb00942a7d446499f22e5cf94d89534.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA546L6Ie05YiX,size_20,color_FFFFFF,t_70,g_se,x_16)
func merge(intervals [][]int) [][]int {
ans := [][]int{}
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][0] < intervals[j][0]
})
ans = append(ans,intervals[0])
for i:= 1; i < len(intervals);i++ {
if intervals[i][0]<=ans[len(ans)-1][1] {
ans[len(ans)-1][1] = max(ans[len(ans)-1][1],intervals[i][1])
}else {
ans = append(ans,intervals[i])
}
}
return ans
}
func max(a,b int) int {
if a>=b {
return a
}
return b
}
func main() {
intervals := [][]int{{1,3}, {2,6},{8,10},{15,18}}
fmt.Println(merge(intervals))
}