代码随想录二刷Day36
今日任务
435.无重叠区间
763.划分字母区间
56.合并区间
语言:Go
435. 无重叠区间
链接:https://leetcode.cn/problems/non-overlapping-intervals/
func min(i, j int) int {
if i < j {
return i
} else {
return j
}
}
func eraseOverlapIntervals(intervals [][]int) int {
//按区间左边界排序,也可按照区间右边界排序,就是要减一下
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][0] < intervals[j][0]
})
count := 0
for i := 0; i < len(intervals) - 1; i++ {
if intervals[i][1] > intervals[i + 1][0] {
intervals[i + 1][1] = min(intervals[i][1], intervals[i + 1][1])
count++
}
}
return count
}
763. 划分字母区间
链接:https://leetcode.cn/problems/partition-labels/
func partitionLabels(s string) []int {
temp := make([]int, len(s))
count := 0
record := make([]int, 26)
for i := 0; i < len(s); i++ {
record[s[i] - 'a'] = i
}
left := 0
right := record[s[0] - 'a']
for i := 0; i < len(s); i++ {
nextPos := record[s[i] - 'a']
if i <= nextPos && nextPos > right {
right = nextPos
} else if i == right {
temp[count] = right - left + 1
count++
left = i + 1
right = i + 1
}
}
res := make([]int, count)
for i := 0; i < count; i++ {
res[i] = temp[i]
}
return res
}
用append
func partitionLabels(s string) []int {
var res []int
record := make([]int, 26)
for i := 0; i < len(s); i++ {
record[s[i] - 'a'] = i
}
left := 0
right := record[s[0] - 'a']
for i := 0; i < len(s); i++ {
nextPos := record[s[i] - 'a']
if i <= nextPos && nextPos > right {
right = nextPos
} else if i == right {
res = append(res, right - left + 1)
left = i + 1
right = i + 1
}
}
return res
}
56. 合并区间
链接:https://leetcode.cn/problems/merge-intervals/
func max(i, j int) int {
if i < j {
return j
} else {
return i
}
}
func merge(intervals [][]int) [][]int {
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][0] < intervals[j][0]
})
var res [][]int
left, right := intervals[0][0], intervals[0][1]
for i := 1; i < len(intervals); i++ {
if intervals[i][0] <= right {
right = max(intervals[i][1], right)
} else {
res = append(res, []int{left, right})
left = intervals[i][0]
right = intervals[i][1]
}
}
res = append(res, []int{left, right})
return res
}