day31贪心算法part01| 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

**455.分发饼干 **

视频讲解 | 力扣链接
刚开始想到的,但是这样太暴力了,太笨了

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {// 胃口g 饼干尺寸sint result = 0;sort(s.begin(), s.end());sort(g.begin(), g.end());vector<bool> usedg(g.size(), false);vector<bool> useds(s.size(), false);for (int i = s.size() - 1; i >= 0; i--) {for (int j = g.size() - 1; j >= 0; j--) {// cout << s[i] << " " << g[j] << endl;if (s[i] >= g[j] && usedg[j] == false && useds[i] == false) {result++;usedg[j] = true;useds[i] = true;} } }cout << result;return result;}
};
class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {// 孩子胃口g 饼干尺寸ssort(s.begin(), s.end());sort(g.begin(), g.end());int result = 0;// 从最大的饼干开始int index = s.size() - 1;for (int i = g.size() - 1; i >= 0; i--) {if (index >= 0 && s[index] >= g[i]) {result++;index--;}}return result;}
};

**376. 摆动序列 **

视频讲解 | 力扣链接

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {int result = 1;int prediff = 0, currdiff = 0; for (int i = 0; i < nums.size() - 1; i++) {int currdiff = nums[i + 1] - nums[i];if ((currdiff < 0 && prediff >= 0) ||(currdiff > 0 && prediff <= 0)) {result++;prediff = currdiff;}}return result;}
};

ChatGPT给的另一个种方法
nums = [1, 7, 4, 9, 2, 5]

  • 起始时,数组的第一个元素(1)不需要比较。
  • 继续看第二个元素 (7),由于 7 > 1,说明有一个上升的摆动,所以 up 更新为 2。
  • 继续看第三个元素 (4),由于 4 < 7,说明有一个下降的摆动,所以 down 更新为 3。
  • 继续看第四个元素 (9),由于 9 > 4,说明又有一个上升的摆动,所以 up 更新为 4。
  • 继续看第五个元素 (2),由于 2 < 9,说明又有一个下降的摆动,所以 down 更新为 5。
  • 最后看第六个元素 (5),由于 5 > 2,说明又有一个上升的摆动,所以 up 更新为 6。

nums = [1,2,2,2,3,4]

  • 起始时,数组的第一个元素(1)不需要比较。
  • 继续看第二个元素 (2),由于 2 > 1,说明有一个上升的摆动,所以 up 更新为 2。
  • 继续看第三个元素 (2),由于 2 == 2,两个相等,没有变化,up 和 down 保持不变。
  • 继续看第四个元素 (2),由于 2 == 2,两个相等,没有变化,up 和 down 保持不变。
  • 继续看第五个元素 (3),由于 3 > 2,说明有一个上升的摆动,但由于之前的 up 已经是 2,up 保持不变。
  • 最后看第六个元素 (4),由于 4 > 3,说明有一个上升的摆动,但由于之前的 up 已经是 2,up 保持不变。

由于数组中的相等元素和连续的上升序列,不会影响最终的摆动序列的长度。贪心算法会自动跳过这些不影响摆动的元素,并只在检测到实际的上升或下降时更新 up 和 down 的值。

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {if (nums.size() <= 1) return nums.size();// 遍历数组并且仅在找到符合摆动条件的元素时更新子序列的长度。int up = 1, down = 1;for (int i = 1; i < nums.size(); i++) {if (nums[i] > nums[i - 1]) {up = down + 1;} else if (nums[i] < nums[i - 1]) {down = up + 1;}}return max(up, down);}
};

**53. 最大子序和 **

视频讲解 | 力扣链接
如果加和的过程中sum小于0了,那么立即从下一个数开始,因为sum为0了肯定得不到最大的连续和,负数只会拖累总和

class Solution {
public:int maxSubArray(vector<int>& nums) {int result = INT32_MIN, sum = 0;for (int i = 0; i < nums.size(); i++) {sum += nums[i];result = sum > result ? sum : result;if (sum < 0) {sum = 0;}}return result;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后方碰撞预警系统技术规范(简化版)

后方碰撞预警系统技术规范(简化版) 1 系统概述2 预警区域3 预警目标4 功能需求功能条件5 显示需求6 指标需求1 系统概述 后方碰撞预警系统RCW(Rear Collision Warning)是在后方车辆即将与自车发生碰撞之前,激活危险警告灯以较高频率闪烁,从而吸引后方驾驶员的注意力,避免…

mysql 数据库datetime 类型,转换为DO里面的long类型后,只剩下年了,没有了月和日

解决方法也简单&#xff1a; 自定义个一个 Date2LongTypeHandler <resultMap id"BeanResult" type"XXXX.XXXXDO"><result column"gmt_create" property"gmtCreate" jdbcType"DATE" javaType"java.lang.Long&…

44【Aseprite 作图】樱花丸子——拆解

1 枝干 2 花朵&#xff1a;其实只要形状差不多都行&#xff0c;有三个颜色&#xff0c;中间花蕊颜色深一点&#xff0c;中间花蕊外的颜色偏白&#xff1b;不透明度也可以改一下&#xff0c;就变成不同颜色 3 丸子 最外层的颜色最深&#xff0c;中间稍浅&#xff0c;加一些高光…

2024全国大学生数学建模竞赛优秀参考资料分享

0、竞赛资料 优秀的资料必不可少&#xff0c;优秀论文是学习的关键&#xff0c;视频学习也非常重要&#xff0c;如有需要请点击下方名片获取。 一、赛事介绍 全国大学生数学建模竞赛(以下简称竞赛)是中国工业与应用数学学会主办的面向全国大学生的群众性科技活动&#xff0c;旨…

修复损坏的Excel文件比你想象的要简单,这里提供几种常见的修复方法

打开重要的Excel文件时遇到问题吗?Microsoft Excel是否要求你验证文件是否已损坏?Excel文件可能由于各种原因而损坏,从而无法打开。但不要失去希望;你可以轻松修复损坏的Excel文件。 更改Excel信任中心设置 Microsoft Excel有一个内置的安全功能,可以在受限模式下打开有…

MySQL数据库的基础:逻辑集合数据库与表的基础操作

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

字符串常量简单介绍

C/C内存四区介绍 如前文所示&#xff0c;字符串常量存储在静态存储区的字符串常量区&#xff0c;这样做的好处是 当程序使用到多个相同的字符串常量时&#xff0c;实际上都是使用的同一份&#xff0c;这样就可以减小程序的体积。注意字符串常量是只读的不能被修改。 如图所示&…

冯喜运:6.11#现货黄金#美原油#行情趋势分析及操作建议

【黄金消息面分析】&#xff1a;随着全球经济的波动&#xff0c;黄金作为传统的避险资产&#xff0c;其价格走势一直备受投资者关注。上周五&#xff0c;美国非农就业报告的强劲表现给美联储降息预期泼了冷水&#xff0c;同时&#xff0c;中国5月份未增持黄金&#xff0c;结束了…

在 Android App 里使用 C 代码 - NDK

原生开发套件 (NDK) 是一套工具&#xff0c;使能够在 Android 应用中使用 C 和 C 代码&#xff0c;并提供众多平台库&#xff0c;可使用这些平台库管理原生 activity 和访问实体设备组件&#xff0c;例如传感器和触控输入。 NDK 可能不适合大多数 Android 编程初学者&#xff…

追觅科技2025校园招聘测评已发(真题)

&#x1f4e3;追觅科技 2025校园招聘测评已发&#xff0c;正在申请的小伙伴看过来哦&#x1f440; ㊙本次校招面向全球于2023年7月 - 2025年12月期间毕业的同学&#xff0c;开放了四大类岗位&#xff1a;营销类、研发类、制作供应类、职能类~ ✅测评解析 &#x1f449; 测评自…

芒果YOLOv10改进38:写作篇:一文了解YOLOv10如何打印FPS指标

只需订阅这一个专栏即可阅读:芒果YOLOv10所有改进内容 💡🚀🚀🚀本博客内含改进源代码,按步骤操作运行改进后的代码即可 💡更方便的统计更多实验数据,方便写作 新增YOLOv10打印FPS指标 完善(一键YOLOv10打印FPS指标) 文章目录 完善(一键YOLOv10打印FPS指标)YOLO…

Linux系统编程(十一)线程、线程控制

线程 一、线程概念&#xff1a; ps -eLf 查看线程号&#xff08;cpu 执行的最小单位&#xff09; 二、Linux内核线程实现原理 三、三级映射&#xff08;三级页表&#xff09; 进程PCB-->页面&#xff08;可看成数组&#xff0c;首地址位于PCB中&#xff09;--》页表--》页…

计算机系统基础笔记(10)——浮点数

前言 结合第四篇观看 效果更好^^ 数值型分为两类 定点数 整数小数 浮点数 注意&#xff1a;小数点不用占用二进制位 第一部分 编码 1.小数的二进制表示 位置计数法&#xff1a;小数点左边的权重是正指数&#xff0c;右边的数是负指数&#xff0c;如图 由此可知&#xff0…

MySQL数据库(二)和java复习

一.MySQL数据库学习(二) (一).DQL查询数据 DQL&#xff08;Data Query Language&#xff09;是用于从数据库中检索数据的语言。常见的 DQL 语句包括 SELECT、FROM、WHERE、GROUP BY、HAVING 和 ORDER BY 等关键字&#xff0c;用于指定要检索的数据、数据源、过滤条件、分组方…

格式化后硬盘数据能恢复吗?硬盘数据恢复这样做!

硬盘是电脑中必备的数据存储设备&#xff0c;另外还有移动硬盘。移动硬盘存储空间非常大、性价比高、便于携带&#xff0c;给我们带来和很多便利。但是和其他存储设备一样&#xff0c;各种硬盘也会出现各种问题&#xff0c;比如常见的格式化硬盘导致数据丢失的问题。 怎么样恢复…

PHP 寿光蔬菜大棚宣传平台-计算机毕业设计源码88288

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于寿光蔬菜大棚宣传平台当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了寿光蔬菜大棚宣传平台&#xff0c;它彻底…

BPF:BCC(BPF Compiler Collection)工具集认知

写在前面 博文内容为 《BPF Performance Tools》 读书笔记整理内容涉及 BCC 工具整体介绍理解不足小伙伴帮忙指正 &#x1f603;,生活加油 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村…

从河流到空气,BL340工控机助力全面环保监测网络构建

在环保监测领域&#xff0c;智能化、高效率的监测手段正逐步成为守护绿水青山的新常态。其中&#xff0c;ARMxy工业计算机BL340凭借其强大的处理能力、高度的灵活性以及广泛的兼容性&#xff0c;在水质监测站、空气质量检测、噪音污染监控等多个环保应用场景中脱颖而出&#xf…

【Linux】进程3——PID/PPID,父进程,子进程

在讲父子进程之前&#xff0c;我们接着上面那篇继续讲 1.查看进程 mycode.c makefile 我们在zs_108直接编译mycode.c&#xff0c;直接运行&#xff0c;然后我们转换另一个账号来查看这个进程 我们可以通过ps指令来查看进程 我们就会好奇了&#xff0c;第二行是什么&#xff…

Linux shell编程学习笔记58:cat /proc/mem 获取系统内存信息

0 前言 在开展系统安全检查的过程中&#xff0c;除了收集cpu信息&#xff0c;我们还需要收集内存信息。在Linux中&#xff0c;获取内存信息的命令很多&#xff0c;这里我们着重研究 cat /proc/mem命令。 1 cat /proc/mem命令 /proc/meminfo 文件提供了有关系统内存的使用情况…