【代码随想录——贪心算法——四周目】

2024-06-06 11:04

本文主要是介绍【代码随想录——贪心算法——四周目】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.用最少数量的箭引爆气球

在这里插入图片描述

func findMinArrowShots(points [][]int) int {n := len(points)sort.Slice(points, func(i, j int) bool {if points[i][0] != points[j][0] {return points[i][0] < points[j][0]} else {return points[i][1] < points[j][1]}})cover := points[0][1]count := 1for i := 0; i<n; i++ {if points[i][1] <= cover {//缩小的cover范围cover = points[i][1]}if points[i][0] <= cover { //代表这只箭还能射中continue}count++cover = points[i][1]}return count
}

2.无重叠区域

在这里插入图片描述

func eraseOverlapIntervals(intervals [][]int) int {n := len(intervals)sort.Slice(intervals, func(i, j int) bool {if intervals[i][0] != intervals[j][0] {return intervals[i][0] < intervals[j][0]} else {return intervals[i][1] < intervals[j][1]}})cover := intervals[0][1]res := 0for i := 1; i < n; i++ {if intervals[i][0] < cover { //表明存在交叉res++if intervals[i][1] < cover { //存在提早结束的选项cover = intervals[i][1]}} else { //不存在交叉cover = intervals[i][1]}}return res
}

3.划分字母区间

在这里插入图片描述

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 {return b}return a
}

4.合并区间

在这里插入图片描述

func merge(intervals [][]int) [][]int {res := make([][]int, 0)sort.Slice(intervals, func(i, j int) bool {if intervals[i][0] != intervals[j][0] {return intervals[i][0] < intervals[j][0]} else {return intervals[i][1] < intervals[j][1]}})n, left, right := len(intervals), intervals[0][0], intervals[0][1]for i := 1; i < n; i++ {if intervals[i][0] <= right { //可能需要更新rightif intervals[i][1] > right {right = intervals[i][1]}} else {res = append(res, []int{left, right})left = intervals[i][0]right = intervals[i][1]}}res = append(res, []int{left, right})return res
}

5.单调递增的数字

在这里插入图片描述

func monotoneIncreasingDigits(n int) int {len := 0nums := make([]int, 11)for n != 0 {nums[len] = n % 10n = n / 10len++}for i := 0; i < len; i++ {if nums[i] < nums[i+1] {nums[i+1]--for j := i; j >= 0; j-- {nums[j] = 9}}}res := 0for i := len - 1; i >= 0; i-- {res = res*10 + nums[i]}return res
}

6.监控二叉树

在这里插入图片描述
思路:后序遍历,从底到上,节点有三种状态。

var (count int
)func minCameraCover(root *TreeNode) int {count = 0if traversal(root) == 0 {count++}return count
}/*
*
0:该节点无覆盖
1:本节点有摄像头
2:本节点有覆盖
*
*/
func traversal(root *TreeNode) int {if root == nil {return 2}left := traversal(root.Left)right := traversal(root.Right)if left == 0 && right == 0 {count++return 1} else if left == 0 && (right == 1 || right == 2) {count++return 1} else if (left == 1 || left == 2) && right == 0 {count++return 1} else if left == 2 && right == 2 {return 0} else {return 2}
}

这篇关于【代码随想录——贪心算法——四周目】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035921

相关文章

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(