代码随想录算法训练营Day31 | 455.分发饼干、376.摆动序列、53.最大子数组和

455.分发饼干

很简单的思路:小孩和饼干分别排个序,逐个匹配即可

确实有那种感觉了:这也叫算法吗?(

int findContentChildren(vector<int>& g, vector<int>& s) {std::sort(g.begin(), g.end());std::sort(s.begin(), s.end());int ans = 0;for (int gIndex = 0, sIndex = 0; gIndex < g.size() && sIndex < s.size();) {// 吃得饱就吃,吃不饱就看下一块稍大点的够不够吃饱if (s[sIndex] >= g[gIndex]) {++ans;++gIndex;++sIndex;}else {++sIndex;}}return ans;
}

376.摆动序列

开始没看清楚题意写成最长连续子序列了、

最长连续子序列

int wiggleMaxLength(vector<int>& nums) {if (nums.size() == 1)return 1;bool pre = false;int ans = 1;int count = 0;for (int i = 1; i < nums.size(); ++i) {int diff = nums[i] - nums[i - 1];if (diff == 0) {count = 0;continue;}bool cur = diff > 0;if (count == 0) {count = 2;}else if(pre + cur == 1) {++count;if (count > ans)ans = count;}else {count = 1;}pre = cur;}return ans;
}

为了保持连续,需要额外判断什么时候对序列进行切割,参数的初始化也更麻烦。

题意理解错了,就当多做了道扩展题吧(

写完发现不对啊,不需要是连续的。想了半天脑子没转过弯,找了文字解析看到图一眼就明白了:

简单来说——计算转折点数量即可 

思路非常简单,但写起来还是有一些细节的,比如diff==0时是需要特殊处理的(我的写法中cur和pre都设置为了bool,>0时为true,false其实对应了<0和==0两种情况,所以需要单独处理)

(写完发现这不比连续子序列简单多了)

int wiggleMaxLength(vector<int>& nums) {if (nums.size() == 1)return 1;bool pre;int ans = 1;for (int i = 1; i < nums.size(); ++i) {int diff = nums[i] - nums[i - 1];// 相等直接跳过(解决相等时cur的判定问题)if (diff == 0)continue;bool cur = diff > 0;// pre + cur == 1表示两者异或,此时为折角if (ans == 1 || pre + cur == 1) {++ans;// 只有在折角处才更新prepre = cur;}}return ans;
}

53.最大子数组和

(过于简单,不禁感叹中等题间亦有差距)

这题的关键是想明白什么情况下需要切割之前的序列:当 总和小于0当前元素大于总和 时切割之前的序列

(写出来一共没几行,直到AC出来前一刻还在想应该没有这么简单吧)

int maxSubArray(vector<int>& nums) {int ans = nums[0];int sum = nums[0];for (int i = 1; i < nums.size(); ++i) {// 当sum小于0且当前值大于sum时舍弃之前的所有元素if (sum < 0 && nums[i] > sum)sum = nums[i];// 其他情况无脑累加即可elsesum += nums[i];// 记录过程中的最大值if (sum > ans)ans = sum;}return ans;
}

总结

第一天做贪心,感觉是真的奇妙,有思路就简单到怀疑人生,脑子拐不过弯就死活想不出。再品几天看看能不能品出点啥。

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

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

相关文章

openGauss学习笔记-219 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-网络

文章目录 openGauss学习笔记-219 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-网络219.1 查看网络状况 openGauss学习笔记-219 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-网络 获取openGauss节点的CPU、内存、I/O和网络资源使用情况&#xff0c;确认这些资源…

MySQL-----函数篇

目录 ▶ 字符串函数 ▶ 数值函数 ▶ 日期函数 ▶ 流程函数 ▶ 简介 函数是指一段可以直接被另一段程序调用的程序或代码。 ▶ 字符串函数 函数描述实例ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码&#xff1a; S…

软件实例分享,宠物店兽医电子处方开单系统软件教程

软件实例分享&#xff0c;宠物店兽医电子处方开单系统软件教程 一、软件教程问答 以下教程以 佳易王宠物店兽医电子处方软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 问&#xff1a;宠物医院电子处方单子使用的纸张大小是多少&…

七天入门大模型 :LLM大模型基础知识最全汇总

七天入门LLM大模型学习 旨在帮助初学者理解和学习LLM的基础概念和实践。 未来七天&#xff0c;我将每天为大家推出一篇课程内容&#xff0c;感兴趣的小伙伴们可关注我们 文章目录 技术交流群用通俗易懂方式讲解系列基础模型研究模型定制新范式LLM类型介绍多模态模型Agent模型C…

国安永远争第一-《软件方法》自测题解析036

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《软件方法》第5章自测题2 3 [ 单选题 ] 经过连续八轮不胜&#xff0c;穿着绿色球衣的主队终于2:1险胜客队。主场球迷小张兴奋至极&#xff0c;从球场出来后经过街边一台ATM时&#…

不止于浏览器:掌握Node.js,开启全栈开发新篇章!

介绍&#xff1a;Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;特别适合构建高性能的网络服务器和实时应用。具体介绍如下&#xff1a; 服务器端JavaScript&#xff1a;Node.js的核心优势之一是在服务器端运行JavaScript&#xff0c;这使得前端开发者可以…

C++笔记:类与对象的语法

文章目录 1 简单认识面向过程与面向对象1.1 面向过程1.2 面向对象 2 类的引入&#xff1a;struct -> class3 类的定义3.1 class 定义类的语法3.2 成员变量的命名建议 4 类的访问限定符4.1 class 和 struct 的区别4.2 C更喜欢用class定义类的原因 5 类的作用域5.1 声明定义合…

代码随想录算法训练营Day25|回溯算法·组合总和III,电话号码的字母组合

组合总和III 题目&#xff1a;找出所有相加之和为n的k个数的组合。组合中只允许含有1-9的正整数&#xff0c;并且每种组合中不存在重复的数字。 组合变量个数为k个&#xff0c;和为n。简单思路是使用k重循环&#xff0c;一层层找出来&#xff0c;然后把每一层的数相加&#x…

【RL】Bellman Optimality Equation(贝尔曼最优等式)

Lecture3: Optimal Policy and Bellman Optimality Equation Definition of optimal policy state value可以被用来去评估policy的好坏&#xff0c;如果&#xff1a; v π 1 ( s ) ≥ v π 2 ( s ) for all s ∈ S v_{\pi_1}(s) \ge v_{\pi_2}(s) \;\;\;\;\; \text{for all…

c++Qt网络操作

1、基础概念 1.1 TCP/UDP TCP 是一种面向连接的传输层协议&#xff0c;它能提供高可靠性通信(即数据无误、数据无丢失、 数据无失序、数据无重复到达的通信) 适用情况&#xff1a; 1.SN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议 2、适合于对传输质量要求较…

力扣hot1--哈希

推荐一个博客&#xff1a; 一文看懂哈希表并学会使用C STL 中的哈希表_哈希表end函数-CSDN博客 哈希做法&#xff1a; 我们将nums[i]记为key&#xff0c;将i记为value。 判断target-nums[i]是否在哈希表中&#xff0c;如果在说明这两个值之和为target&#xff0c;那么返回这两…

AI绘画作品的展示和变现-2

4.7 制作红包封面 中国的节日和传统文化元素仍然可以成为创作者们的创作灵感&#xff0c;创造出更多的变现机会。比如元宵节&#xff0c;可以制作大型元宵图案&#xff0c;进行引流并卖出元宵。 而春分、谷雨等节气也可以成为创作的灵感来源&#xff0c;创作出与之相关的图案&…