Golang:
思路:试想,如果给我们的是按照intervals[i][0]
大小顺序排列好的数组,那么我们在做数组合并的时候是否会简单一些呢?答案是肯定的,而且需要注意的是,题意中给的测试用例是按照我上文提及的顺序排列好的,但题目里并没有给出数组是排列好的这一句话。所以,要首先对数组做按照intervals[i][0]
大小顺序排列的操作。然后,是如何对数组进行合并及存储呢?不难看出,我们只需要对intervals[i][1]
和intervals[i+1][0]
进行比较,至于怎么个比较法,各位可以找张纸画一画即可,另外,代码里也有,这里就不给出详细说明了。
附上程序效果截图
type ints [][]int
func (s ints) Len() int { return len(s) }
func (s ints) Less(i, j int) bool { return s[i][0] < s[j][0] }
func (s ints) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func merge(intervals [][]int) [][]int {
var res [][]int
if len(intervals)==0 {
return res
}
sort.Sort(ints(intervals))
i:=0
if i<len(intervals)-1{
for{
if i>=len(intervals)-1 {
break
}
if intervals[i][1]<intervals[i+1][0] {
res=append(res,intervals[i])
}else if intervals[i][1]==intervals[i+1][0]{
intervals[i+1][0]=intervals[i][0]
}else{
intervals[i+1][0]=intervals[i][0]
if intervals[i+1][1]<intervals[i][1] {
intervals[i+1][1]=intervals[i][1]
}
}
i++
}
}
res=append(res,intervals[i])
return res
}
有疑问加站长微信联系(非本文作者)