当前位置: 首页 > news >正文

代码随想录算法训练营第二十七天 | 455.分发饼干,376. 摆动序列,53. 最大子序和

二十七天打卡,今天是贪心算法的第一天,贪心算法没有固定解法,摆动序列这一题要固定判断平坡规则


455.分发饼干

题目链接

做题过程

  • 优先小饼干喂小胃口的人,这样能求得最多喂饱的人数。

知识点

  • 时间复杂度:O(nlogn)
  • 空间复杂度:O(1)

贪心算法

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {int result = 0;sort(g.begin(), g.end());sort(s.begin(), s.end());int i = 0;int j = 0;while (i < g.size() && j < s.size()) {if (g[i] <= s[j]) {result++;i++;j++;} else {j++;}}return result;}
};

376.摆动序列

题目链接

做题思路

  • 做的时候想用贪心做,但没考虑到平坡的情况,这时要统一规则

知识点

  • 本题要考虑三种情况:
    1. 情况一:上下坡中有平坡
    2. 情况二:数组首尾两端
    3. 情况三:单调坡中有平坡

贪心算法

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

53.最大子数组和

题目链接

解题过程

  • 局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。
  • 全局最优:选取最大“连续和”

贪心算法

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

http://www.mrgr.cn/news/23809.html

相关文章:

  • STM32时钟配置图详解
  • 在线动漫信息平台
  • 大学生租房平台:SpringBoot技术实现详解
  • 存储课程学习笔记6_io接口练习(readv,writev, 借助本地socket实现进程间(sendmsg,recvmsg)通过共享内存数据交互)
  • pointpillar部署-TensorRT实现(二)
  • PostgreSQL 日常SQL语句查询记录
  • openharmony 应用支持常驻和自启动
  • 揭秘!ArrayList 扩容机制背后的那些“小心机“——不同版本的源码深度解析
  • 时空特征融合方向小论文创新点一次性都给你!看到就是赚到
  • log4j
  • ELK 架构中 ES 性能优化
  • 在 SNMP 中的数据类型码
  • nnunetv2系列:使用默认的预测类推理2D数据
  • Java实现建造者模式和源码中的应用
  • MMO:道具系统
  • opencv图像透视处理
  • jupyter出错ImportError: cannot import name ‘np_utils‘ from ‘keras.utils‘ ,怎么解决?
  • 数据看板多端查看无压力,教你轻松设置响应式布局
  • 论文速读|信任 PRoC3S:利用大型语言模型和约束满足解决长时域机器人问题。
  • framebuffer帧缓存