day31 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
● 455.分发饼干
● 376. 摆动序列
● 53. 最大子序和
在本次的题目中,我们使用了贪心算法来解决三个问题:分发饼干、摆动序列、最大子序和。这三个问题都可以使用贪心算法来解决,而且贪心算法的时间复杂度相对较低,能够在较短的时间内得出解决方案。
- 分发饼干
题目描述:有一群孩子和一些饼干,每个孩子有一个贪心因子g,每个饼干有一个大小s。只有当一个孩子的贪心因子小于等于饼干的大小时,这个孩子才能获得这个饼干。求最多能满足多少个孩子。
贪心思路:首先将孩子的贪心因子g和饼干的大小s从小到大排序,然后从贪心因子最小的孩子开始,依次判断每个孩子是否能够获得一块饼干。如果可以获得,则将饼干的大小s++,继续判断下一个孩子是否能够获得饼干。如果不能获得,则继续寻找下一个大小更大的饼干,直到找到一个能够满足当前孩子的饼干或者没有更大的饼干为止。
Java代码如下:
public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int i = 0, j = 0;int count = 0;while (i < g.length && j < s.length) {if (g[i] <= s[j]) {count++;i++;j++;} else {j++;}}return count;
}
- 摆动序列
题目描述:给定一个整数序列,你的任务是找到其中最长的摆动子序列的长度。摆动序列的定义:如果连续元素之间的差的正负性交替出现,则称这样的序列为摆动序列。
贪心思路:从序列的第一个数开始,判断当前数与下一个数之间的差的正负性。如果这两个数之间的差为正,则说明下一个数应该比当前数大;如果这两个数之间的差为负,则说明下一个数应该比当前数小。如果这两个数之间的差为0,则说明这两个数相等,直接跳过。通过这样的方式,每次找到一个摆动序列的峰值或者谷值,最终就能得到最长的摆动子序列的长度。
Java代码如下:
public int wiggleMaxLength(int[] nums) {if (nums.length < 2) {return nums.length;}int preDiff = 0;int curDiff = 0;int count = 1;for (int i = 1; i < nums.length; i++) {curDiff = nums[i] - nums[i - 1];if ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0)) {count++;preDiff = curDiff;}}return count;
}
- 最大子序和
题目描述:给定一个整数序列,找到一个具有最大和的连续子序列(至少包含一个数)。
贪心思路:从序列的第一个数开始,依次将每个数加到当前的子序列中,并记录当前子序列的最大值和当前子序列的和。如果当前子序列的和小于0,则说明当前子序列已经不可能是最大的连续子序列了,需要重新开始寻找从下一个数开始的子序列。通过这样的方式,每次找到一个最大的连续子序列的和,最终就能得到整个序列中的最大子序和。
Java代码如下:
public int maxSubArray(int[] nums) {int maxSum = nums[0];int curSum = 0;for (int i = 0; i < nums.length; i++) {curSum += nums[i];if (curSum > maxSum) {maxSum = curSum;}if (curSum < 0) {curSum = 0;}}return maxSum;
}
贪心算法理论知识总结
贪心算法是一种解决最优化问题的算法,它是一种启发式算法,通过每一步的最优选择来达到整体的最优解。贪心算法的具体实现方法就是在每一步选择中都采取当前状态下最优的选择,从而希望得到全局最优解。
贪心算法的时间复杂度通常比较低,因为它每次只考虑当前状态下的最优解,不需要考虑全局的情况。但是,贪心算法并不能保证得到全局最优解,因为它每次都只考虑局部最优解,可能会导致整体上的局部最优解并不是全局最优解。
因此,在使用贪心算法时,需要确定一个贪心策略,即确定每一步的最优选择,以保证最终得到的解是全局最优解。同时,需要证明所采用的贪心策略是正确的,即证明每一步的最优选择可以推导出全局最优解。
相关文章:
day31 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和 在本次的题目中,我们使用了贪心算法来解决三个问题:分发饼干、摆动序列、最大子序和。这三个问题都可以使用贪心算法来解决,而且贪心算法的时间复杂度相对较低,能够在较短的…...
MobTech 秒验|本机号码一键登录会泄露隐私吗
本机号码一键登录是一种新型的应用登录方式,它可以利用运营商的数据网关认证能力,实现手机号免密登录,提高用户体验和转化率,降低验证成本和流失率。本机号码一键登录支持三大运营商号码认证,3秒内完成手机号验证&…...
2023年供销合作社研究报告
第一章 行业概况 1.1 供销合作社概述 中华全国供销合作总社,是中华人民共和国全国供销合作社的联合组织。中华全国供销合作总社的前身可以追溯到1949年11月成立的中央合作事业管理局。在新中国成立初期,供销合作社就基本形成了自上而下、覆盖全国的组织…...
【ansible】实施任务控制
目录 实施任务控制 一,循环(迭代)--- loop 1,利用loop----item循环迭代任务 2,item---loop循环案例 1,定义item循环列表 2,通过变量应用列表格式 3,字典列表(迭代嵌套子…...
49天精通Java,第11天,java接口和抽象类的异同,default关键字
目录一、什么是接口二、接口的特点三、接口和类的区别四、接口和抽象类的区别五、接口的声明方式六、default默认方法大家好,我是哪吒。 一、什么是接口 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的…...
JAVA练习99-逆波兰表达式求值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-逆波兰表达式求值 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 4月5…...
恶意软件、恶意软件反杀技术以及反病毒技术的详细介绍
1.恶意软件简单介绍恶意软件是指在计算机系统上执行恶意任务的病毒、蠕虫和特洛伊木马的程序,通过破坏软件进程来实施控制。腾讯移动安全实验室发布的数据显示,恶意软件由多种威胁组成,会不断弹出,所以需要采取多种方法和技术来进…...
【数据库运维】mysql备份恢复练习
目录 数据库备份,数据库为school,素材如下 1.创建student和score表 2.为student表和score表增加记录 3.备份数据库school到/backup目录 4.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库 5.直接将My…...
刷题30-对称的二叉树
对称的二叉树 思路:用递归,首先明白递归中止的条件是什么 搬用别人的看法: 做递归思考三步: 1.递归的函数要干什么? 函数的作用是判断传入的两个树是否镜像。 输入:TreeNode left, TreeNode right 输出…...
精选简历模板
1.应届生通用简历模板(.docx) 适用于应届生找工作的学生群体 https://download.csdn.net/download/weixin_43042683/87652099https://download.csdn.net/download/weixin_43042683/87652099 部分缩略图如下: 2.研究生通用简历模板(.docx)…...
蓝桥杯嵌入式第十三届客观题解析
文章目录 前言一、题目1二、题目2三、题目3四、题目4五、题目5六、题目6七、题目7八、题目8九、题目9十、题目10总结前言 本篇文章将带大家来学习蓝桥杯嵌入式的客观题了,蓝桥杯嵌入式的客观题涉及到模电,数电,单片机等知识,需要非常扎实的基础,客观题不能急于求成只能脚…...
【Redis】线程问题
文章目录单线程版本演化工作流程为什么逐渐又加入了多线程特性?影响Redis性能的主要因素->网络I/O多线程工作流程Unix网络编程中的五种I/O模型I/O多路复用工作原理:select、poll、epoll为什么Redis快单线程与多线程的比较配置文件开启多线程单线程 版本演化 Re…...
【算法题】2498. 青蛙过河 II
题目: 给你一个下标从 0 开始的整数数组 stones ,数组中的元素 严格递增 ,表示一条河中石头的位置。 一只青蛙一开始在第一块石头上,它想到达最后一块石头,然后回到第一块石头。同时每块石头 至多 到达 一次。 一次…...
【新2023Q2押题JAVA】华为OD机试 - 整理扑克牌
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:整理扑克牌 题目 给定一组数…...
【hello C语言】文件操作
目录 1. 什么是文件? 2. 程序文件 3. 数据文件 4. 文件名 5. 文件类型 5.1 二进制文件 5.2 文本文件 5.3 数据在内存中的存储 6. 文件缓冲区 7. 文件指针 8. 文件的打开和关闭 9. 文件的顺序读写 10. 文件的随机读写 10.1 fseek:根据文件指针的位置和偏移…...
OBCP第八章 OB运维、监控与异常处理-数据库监控
系统监控视图:系统视图 OceanBase 数据库为多租户架构,租户分为两种类型:普通租户以及 sys 租户。OceanBase 数据库系统表都存储在 sys 租户,且主键中存储租户号(tenant_id),区分每个租户的内容…...
已经提了离职,还有一周就走,公司突然把我移出企业微信,没法考勤打卡, 还要继续上班吗?...
黎明前的黑暗最容易出事,离职前的几天也最容易出幺蛾子,比如下面这位网友的遭遇:已经提了离职,还有一周就正式离职了,公司突然把我移出企业微信,没法考勤打卡了, 还要继续上班吗?该怎…...
Win11启用IE方法
呉師傅 Win11是微软目前的最新系统,尽管该系统非常不错,但是还是有很多不一样的地方,有的用户发现Win11没有了IE浏览器,那么Win11没有IE浏览器怎么办呢,有的旧网页需要IE浏览器才能进入,下面就给大家提供一…...
有人靠ChatGPT 狂赚200W !有人到现在,连账号都没开通......
作者| Mr.K 编辑| Emma来源| 技术领导力(ID:jishulingdaoli)互联网风水轮流转,当初元宇宙盛极一时之际,在一些知识付费平台上,任何一个关于元宇宙的课程或培训,都很热销,有一定号召力的博主,登…...
基于GD32F470的mbedtls 3DES算法测试
3DES加密算法介绍 3DES数据加密算法是一种可逆的对称加密算法,也称三重数据加密算法。3DES块加密算法的设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的密码算法,目前3DES作为DES…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...
