本文主要是介绍算法训练第26天|452. 用最少数量的箭引爆气球|435. 无重叠区间|763.划分字母区间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LeetCode 452. 用最少数量的箭引爆气球
题目链接:452. 用最少数量的箭引爆气球
题目讲解:代码随想录
func findMinArrowShots(points [][]int) int {var res int = 1// 先按照第一位排序sort.Slice(points, func(i, j int)bool{return points[i][0] < points[j][0]})for i := 1; i < len(points); i++{if points[i-1][1] < points[i][0]{ // 前一个右边界小于 后一个的左边界,不重合res++} else{points[i][1] = min(points[i-1][1], points[i][1]) // 更新重叠气球最小右边界,}}return res
}func min(a, b int) int{if a > b{return b}return a
}
LeetCode 435. 无重叠区间
题目链接:435. 无重叠区间
题目讲解:代码随想录
func eraseOverlapIntervals(intervals [][]int) int {res := 0sort.Slice(intervals, func(i, j int)bool{return intervals[i][0] < intervals[j][0]})for i := 1; i < len(intervals); i++{if intervals[i][0] < intervals[i-1][1]{res++intervals[i][1] = min(intervals[i-1][1], intervals[i][1])}}return res
}func min(a, b int) int{if a > b{return b}return a
}
LeetCode 763.划分字母区间
题目链接:763.划分字母区间
题目讲解:代码随想录
func partitionLabels(s string) []int {var res []intvar marks [26]intsize, left, right := len(s), 0, 0for i := 0; i < size; i++{marks[s[i] - 'a'] = i // 统计对应字母的最远位置}for i := 0; i < size; i++ {right = max(right, marks[s[i] - 'a']);if i == right {res = append(res, right - left + 1);left = i + 1;}}return res;
}func max(a, b int) int {if a < b {a = b;}return a;
}
这篇关于算法训练第26天|452. 用最少数量的箭引爆气球|435. 无重叠区间|763.划分字母区间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!