算法训练营day31,贪心算法5

package main

import (

"fmt"

"sort"

)

//435. 无重叠区间

func eraseOverlapIntervals(intervals \[\]\[\]int) int {

if len(intervals) == 0 {

return 0

}

count := 0 //移除数量

//按第一位从小到大排序

sort.Slice(intervals, func(i, j int) bool {

return intervalsi0 < intervalsj0

})

for i := 1; i < len(intervals); i++ {

//如果当前左边界比前一个右边界比小,说明重叠需要删除

if intervalsi0 < intervalsi-11 {

count++

if intervalsi1 > intervalsi-11 {

intervalsi1 = intervalsi-11

}

}

}

return count

}

//763. 划分字母区间

func partitionLabels(s string) \[\]int {

m1 := make(mapbyteint)

for i := 0; i < len(s); i++ {

m1s\[i] = i

}

result := make(\[\]int, 0)

left, right := 0, 0

for i := 0; i < len(s); i++ {

if m1s\[i] > right {

right = m1s\[i]

}

if i == right {

result = append(result, right-left+1)

left = i + 1

}

}

return result

}

//56. 合并区间

func merge(intervals \[\]\[\]int) \[\]\[\]int {

result := make(\[\]\[\]int, 0)

sort.Slice(intervals, func(i, j int) bool {

return intervalsi0 < intervalsj0

})

result = append(result, intervals0)

for i := 1; i < len(intervals); i++ {

//如果当前左边界比结果数组最后一个右边界比小,说明重叠

if intervalsi0 <= intervalsi-11 {

if resultlen(result)-11 < intervalsi1 {

resultlen(result)-11 = intervalsi1

}

} else {

result = append(result, intervalsi)

}

}

return result

}

相关推荐
ZhengEnCi2 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
吞下星星的少年·-·6 小时前
Div.3 CF 1131A题(排序,模拟)
算法·模拟·排序
aichitang20246 小时前
代数拓扑学与现代前沿视角
考研·算法·数学建模·ai·拓扑学·高考
二本咕咕-机械转码6 小时前
FreeRTOS深入解析(一)_链表与并发保护——哨兵循环链表、排序键游标、临界区与关调度
单片机·算法·链表
-银雾鸢尾-7 小时前
两数之和-C++实现
c++·算法
j7~7 小时前
【动态规划算法专题】动态规划五部曲实战:泰波那契数、三步问题、最小花费爬楼梯
c++·算法·动态规划·数据结构与算法
倍利福猎头公司官方账号7 小时前
大企业HR如何向猎头公司清晰传达AI岗位的技术需求?
人工智能·算法·机器人·求职招聘·业界资讯
揽星河..7 小时前
【C++】类和对象
c++·算法
D e re k ZH8 小时前
C++ 并发、未定义行为与工程化难点(No 3)
数据结构·c++·算法·面试