leetcode刷题笔记(Golang)--57. Insert Interval

57. Insert Interval

Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).

You may assume that the intervals were initially sorted according to their start times.

Example 1:

Input: intervals = [[1,3],[6,9]], newInterval = [2,5]
Output: [[1,5],[6,9]]
Example 2:

Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
Output: [[1,2],[3,10],[12,16]]
Explanation: Because the new interval [4,8] overlaps with [3,5],[6,7],[8,10].

func insert(intervals [][]int, newInterval []int) [][]int {
	if len(intervals) < 1 {
		return append(intervals, newInterval)
	}
	insertIntls, res := [][]int{}, [][]int{}
	index := 0
	for i, v := range intervals {
		if intervals[i][0] > newInterval[0] {
			insertIntls = append(insertIntls, newInterval)
			insertIntls = append(insertIntls, v)
		} else {
			insertIntls = append(insertIntls, v)
			if i == len(intervals)-1 {
				insertIntls = append(insertIntls, newInterval)
			}
		}
	}

	insertIntls = append(insertIntls, intervals[index:]...)
	res = append(res, insertIntls[0])
	fmt.Println(insertIntls)
	for i := 1; i < len(insertIntls); i++ {
		l := len(res)
		if res[l-1][1] < insertIntls[i][0] {
			res = append(res, insertIntls[i])
		} else {
			if res[l-1][1] < insertIntls[i][1] {
				res[l-1][1] = insertIntls[i][1]
			}
		}
	}
	return res
}
发布了65 篇原创文章 · 获赞 0 · 访问量 374

猜你喜欢

转载自blog.csdn.net/weixin_44555304/article/details/104257785