算法训练营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

}

相关推荐
hetao17338371 小时前
2026-09-29 hetao1733837 的刷题记录
c++·算法
欣欣之王来了2 小时前
AI合规专项:AI算法透明度的合规要求
人工智能·算法
wzdark2 小时前
分块思想在算法优化中的实践与应用4
算法
Because_of_Her12 小时前
dfs-洪水填充技巧
笔记·算法·深度优先·洪水填充
小静AI工程实验室2 小时前
RSA 算法详解:从模幂原理到 OAEP 加密、PSS 签名与 Python 实验
python·算法
xzal122 小时前
GESP Python笔记
笔记·python·算法
wzdark2 小时前
算法中的记忆化思想与重复子问题优化4
算法
Discipline10293 小时前
流水线运行是否正随时间变得更加集中?
算法
lzhdim3 小时前
C#不为人知的10个魔法特性:资深开发者也会震惊的底层奥秘
java·前端·javascript·算法·c#
weixin_307779133 小时前
C++代码实现MATLAB中的pade函数功能
开发语言·c++·算法·matlab