代码随想录Day31 | 贪心算法 455.分发饼干 376. 摆动序列 53. 最大子序和

代码随想录Day31 | 贪心算法 455.分发饼干 376. 摆动序列 53. 最大子序和

  • 贪心算法
  • 455.分发饼干
  • 376.摆动序列
  • 53.最大子序和

贪心算法

局部最佳 --> 全局最佳
刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心

455.分发饼干

文档讲解:代码随想录
视频讲解: 贪心算法,你想先喂哪个小孩?| LeetCode:455.分发饼干
状态

局部最优:有两种思考方式,最大的饼干喂饱最大胃口 或则 最小的饼干去喂饱最小的胃口,其实道理都是一样的
但是遍历的是饼干还是胃口就有区别了。
先满足最大的,需要通过胃口的遍历来控制饼干的移动。
先满足最小的,需要通过饼干的遍历来控制胃口的移动。
在这里插入图片描述

由于需要从最小开始或则最大开始所以需要对两个数组排序。排序之后,对于当前的饼干最大值去寻找满足条件的最大胃口,然后移动两个指针直到一个指针走完了其所属的数组

//对于满足
//优先满足能够满足的最大胃口的孩子

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        int res = 0;
        if(g.size() == 0 || s.size() == 0)
        {
            return res;
        }
        //对孩子的胃口排序
        sort(g.begin(),g.end());
        //对饼干的大小排序
        sort(s.begin(),s.end());
        //对s从大到小,去考察g中的大小
        int i = s.size()-1;
        //遍历胃口,当有胃口合适的计数
        for(int j = g.size()-1;j>=0;j--)
        {
            if(i>=0 && g[j] <= s[i])
            {
                res++;
                i--;
            }
        }
        return res;
    }
};

376.摆动序列

文档讲解:代码随想录
视频讲解: 贪心算法,寻找摆动有细节!| LeetCode:376.摆动序列
状态

局部最优:删除单调走向上的节点,或者平坡的节点 --> 保留峰和谷

情况一:上下坡中有平坡
情况二:数组首尾两端
情况三: 单调坡中有平坡

在这里插入图片描述
pre应当在更新坡度时才改变,即放到if语句里面,否则实时更新pre那么,平坡会消除单调性,导致判断失误

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        if(nums.size() <= 1)
        {
            return nums.size();
        }
        int res = 1;

        //当前的差值
        int cur = 0;
        //前一步的差值
        int pre = 0;

        for(int i = 0;i<nums.size()-1;i++)
        {
            cur = nums[i+1] - nums[i];
            if(cur < 0 && pre >= 0)
            {   
                res++;
                pre = cur;
            }
            if(cur > 0 && pre <= 0)
            {
                res++;
                pre = cur;
            }
        }
        return res;
    }
};

53.最大子序和

文档讲解:代码随想录
视频讲解: 贪心算法的巧妙需要慢慢体会!LeetCode:53. 最大子序和
状态

局部最优:当当前和计算为负数时,就需要放弃,因为其会导致下一个连续和变小。
代码随想录中这个关于是负数还是和为负数更新位置的解释很清晰
在这里插入图片描述

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        //记录返回和
        int res = INT_MIN;

        //记录当前序列和
        int cur = 0;
        for(int i = 0;i<nums.size();i++)
        {
            //记录当前下标以及之前的和
            cur += nums[i];
            if(cur > res)
            {
                res = cur;
            }
            //如果和为负数,那么清空cur相当于从下一个数再重新开始计算
            if(cur <  0)
            {
                cur = 0;
            }
        }
        
        return res;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT+QGIS跨平台编译】之九:【LZ4+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、LZ4介绍二、文件下载三、文件分析四、pro文件五、编译实践一、LZ4介绍 LZ4是一种无损压缩算法,压缩速度为每核心400MB/s。 LZ4是目前效率最高的压缩算法,更加侧重于压缩/解压缩速度,压缩比并不突出,本质上就是时间换空间。 LZ4库是使用BSD许可证作为开放源码…

Linux——shell程序的简单实现

shell程序的简单实现 本章思维导图&#xff1a; 注&#xff1a;本章思维导图对应的.xmind和.png文件都已同步导入至资源&#xff0c;可免费查阅 在学习完有关进程的知识后&#xff0c;我们就可以开始尝试自己实现一个简单的shell程序了。 注&#xff1a;在编写简单的shell程…

Linux实现:从倒计时到进度条

文章目录 1.回车与换行2.缓冲区的概念3.倒计时4.进度条(第一版无应用场景)5.进度条(第二版有应用场景) 1.回车与换行 2.缓冲区的概念 强制刷新可以使用冲刷函数fflush #include <stdio.h> #include <unistd.h> int main() {printf("I am a \nhandsome man!&q…

leetcode 第三弹

链表声明&#xff1a; * Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(n…

【K12】tk窗口+plt图像功能-学习物理中的串并联研究【附源码说明】

程序源码 import tkinter as tk import matplotlib.pyplot as plt# 初始化 matplotlib 的字体设置 plt.rcParams[font.family] SimHei# 计算串联电路的函数 def calculate_series():try:# 获取用户输入的电阻值并转换为浮点数r1 float(entry_r1.get())r2 float(entry_r2.ge…

【CANoe使用大全】——Trace窗口

&#x1f64b;‍♂️【CANoe使用大全】系列&#x1f481;‍♂️点击跳转 文章目录 1.Trace作用2.Trace窗口打开方式2.1.Analysis—>Trace2.2.Measurement Setup ------> Trace 3.Trace窗口菜单栏介绍3.1. Detail View3.1. Statistic View3.3.Difference view3.4.Predefi…

【开发问题问题解决开发小技巧】通用资源管理01

【问题】新增应该输出提示但是出现乱码 查看会话发现是会话已结束&#xff0c;好家伙 重新登录会话依旧新增失败&#xff0c; 原来是提交的项没添加ORZ 【问题】会话保护 将会话保护改为“无限制” 执行修改提交但是一直在加载中&#xff0c;回滚后执行直接跳出来“未找到驱动程…

js打地鼠

文章目录 1实现效果2代码实现 1实现效果 游戏难度&#xff1a;简单&#xff0c;一般&#xff0c;困难&#xff0c;噩梦&#xff08;控制setInterval的time参数&#xff09; 按钮功能&#xff1a;结束&#xff08;可以通过修改gameScore的值来修改判定结束的分数&#xff09;&am…

MySQL十部曲之四:MySQL中的数据类型

文章目录 前言概述数字类型数字类型语法数字类型字面量十六进制字面量位字面量布尔字面量 数字类型的属性超出范围和溢出处理 时间和日期类型时间和日期类型语法DATE、DATETIME和TIMESTAMP的异同TIMESTAMP和DATETIME的自动初始化和更新时间和日期字面量 字符串类型字符串类型语…

知识圣殿,智慧熔炉

知识圣殿&#xff0c;智慧熔炉 知识殿堂&#xff0c;巍然屹立 一座灵魂熔炉&#xff0c;号称图书馆 万卷书香盈架&#xff0c;智慧如星河汇聚 每一册书页&#xff0c;流淌着人类文明的血脉 钢笔与墨水交织诗篇 思想发芽&#xff0c;真理绽放光焰 浩瀚知识海洋&#xff0c;波涛…

tensorboard+seaborn 画RL论文图片

概要 tensorboard记录数据&#xff0c;并保存为fie_name.csv 文件加载file_name.csv文件, 处理加载得到数据,然后通过seaborn 显示出来。 1. tensorboard 通常来说&#xff0c;我们一般会用 tensorboard 去记录一些数据。 所以我们先介绍一下 tensorboard 一些注意事项 seti…

mybatis-plus常用使用方法

** mybaits-plus常用使用方法 ** 常用三层分别继承方法 1.1mapper层&#xff08;接口定义层&#xff09;可以用BaseMapper<> 例如&#xff1a; 1.2.里面常用的封装方法有 1.3常用方法介绍 【添加数据&#xff1a;&#xff08;增&#xff09;】int insert(T entity);…

css不规则的文本环绕

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>不规则的文本环绕</title><style>.b…

性能测试混合业务场景

已知从生产环境中统计出的接口比例如下所示&#xff1a; 接口接口比例接口140%接口220%接口330%接口410% 场景一&#xff1a;以上接口无上下依赖关系&#xff0c;设计出容量场景 接口1比例如下&#xff1a; 接口2比例如下&#xff1a; 接口3比例如下&#xff1a; 接口4比例如…

HFSS实战(三)——过孔via TDR仿真

文章目录 一、模型的处理二、TDR仿真2.1 修改求解模式2.2增加求解设置 三、查看仿真结果3.1 查看TDR结果3.2 查看S参数结果 四、结果分析4.1上升时间tr对仿真的影响 附&#xff1a;工程链接 在上一讲中&#xff0c;主要是通过观察S参数确定via的优化是否达到目标。但S参数只能看…

AI嵌入式K210项目(21)-AI模型文件导入至TF卡

文章目录 前言一、模型文件二、方法1三、方法2总结 前言 上一章节介绍了使用MicroPython进行开发&#xff0c;IDE中有很多的示例教程&#xff0c;相信大家已经迫不及待的想试试了&#xff0c;里面人目标检测的例程需要调用训练好的模型文件&#xff0c;这一章介绍如何将AI模型…

关于MySQL的基本查询(多表查询等)

1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); 创建score表。SQL代码如下&#xff1a; CREATE…

25考研政治备考计划

各位小伙伴大家好&#xff0c;今天给大家分享的是25考研政治复习备考计划。 政治没有基础阶段&#xff0c;直接就是强化&#xff0c;强化的内容也就是听课&#xff0c;刷题。 【时间安排】 *7-9月中 徐涛老师或腿姐强化课&#xff0c;推荐刷肖1000 *9月中-10月中 背腿姐的背…

BLIP-2: 基于冻结图像编码器和大型语言模型的语言-图像预训练引导

BLIP-2: 基于冻结图像编码器和大型语言模型的语言-图像预训练引导 项目地址BLIP-2的背景与意义BLIP-2的安装与演示BLIP-2模型库图像到文本生成示例特征提取示例图像-文本匹配示例性能评估与训练引用BLIP-2Hugging Face集成 在语言-图像预训练领域&#xff0c;BLIP-2的出现标志着…

Mac M1 Parallels CentOS7.9 Deploy 禅道

禅道官网下载地址: https://www.zentao.net/download/max4.10-83276.html 一、官网下载 二、解压安装 将下载好的包传至CentOS7.9虚拟机 zhinian192 ~ % scp Downloads/ZenTaoPMS-max4.10-zbox_arm64.tar.gz root10.211.55.36:~ ZenTaoPMS-max4.10-zbox_arm64.tar.gz …