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

代码随想录算法训练营:27/60

非科班学习算法day27 | LeetCode455:分发饼干 ,Leetcode376:摆动序列 ,Leetcode53:最大子数组和 


介绍

包含LC的两道题目,还有相应概念的补充。

相关图解和更多版本:

代码随想录 (programmercarl.com)https://programmercarl.com/#%E6%9C%AC%E7%AB%99%E8%83%8C%E6%99%AF


二、LeetCode题目

1.LeetCode455:分发饼干 

题目链接:455. 分发饼干 - 力扣(LeetCode)

题目解析

       局部最优的方式是:用当前最大的饼干喂胃口最大的孩子,并依次向后寻找,直到饼干用完或者孩子都吃上。

 c++代码如下:

class Solution {
public:// 数组排序,倒序遍历int count = 0;int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int max_s = s.size() - 1;for (int i = g.size() - 1; i >= 0; i--) {if (max_s >= 0 && s[max_s] >= g[i]) {count++;max_s--;}}return count;}
};

注意点1:一开始使用的是双循环然后还用break,很难控制,而且后来改对了但是容易超时。所以这里学习了使用标记位置的方法,满足条件就减去一个饼干

注意点2:这里孩子或者饼干的数量是没有固定关系的,所以都可能遍历完,for循环里控制的是孩子的遍历结束,而max_s>=0控制的是饼干的遍历结束

 2.Leetcode376:摆动序列 

题目链接:376. 摆动序列 - 力扣(LeetCode)

题目解析

       我认为代码随想录中这道题的做法有点分类复杂了,虽然最后的代码呈现很简单,分为了三种情况去考虑;我学习了一种写法,我觉得理解更为容易,因为我们需要根据局部峰值的数量来统计全局最优的数量,那么也就是说只需要比较一个点前后两个坡度的正负,甚至值的大小都不重要;还有一个点就是怎么处理相等(平坡)?可以直接跳过循环,比分类要容易的多。

 C++代码如下: 

class Solution {
public:// 开贪!--局部最优为删除坡度中间值--全局最优统计峰值局部峰值个数int wiggleMaxLength(vector<int>& nums) {// 前坡int preDiff = 0;// 后坡int curDiff = 0;// 计数变量int count = 1;// 处理异常if (nums.size() <= 1)return nums.size();// 统计拐角for (int i = 0; i < nums.size() - 1; ++i) {curDiff = nums[i + 1] - nums[i];if ((preDiff >= 0 && curDiff < 0) ||(preDiff <= 0 && curDiff > 0)) {count++;preDiff = curDiff;}}return count;}
};

 简易c++代码如下:

class Solution {
public:// 开贪!--也是统计局部峰值int wiggleMaxLength(vector<int>& nums) {// 初始化计数变量int count = 1;// 初始化前坡int preDiff = 0;// 初始化后坡int curDiff = 0;// 处理异常if (nums.size() <= 1)return nums.size();// 大于等于两个的序列for (int i = 1; i < nums.size(); ++i) {if (nums[i] == nums[i - 1])continue;curDiff = (nums[i] > nums[i - 1]) ? 1 : -1;count += curDiff != preDiff;preDiff = curDiff;}return count;}
};

注意点1:这里运用了三目运算符,简化了代码写法,主要的意思就是,我们在遇到相等的时候已经跳过了,那么现在就看是正是负,值不重要

注意点2:在统计量做增加操作的时候,完全可以写成if的形式,这里是用了先用bool返回1或者0,然后做调整操作。

3.Leetcode53:最大子数组和

题目链接:53. 最大子数组和 - 力扣(LeetCode)

题目解析

       首先利用暴力遍历的方法,可以计算每一个元素作为开头的子数组的最大和,然后用一个全局变量实时维护。

C++代码如下:

class Solution {
public:// 暴力求解int max_sum = INT_MIN;int maxSubArray(vector<int>& nums) {for (int i = 0; i < nums.size(); ++i) {int sum = 0;for (int j = i; j < nums.size(); ++j) {sum += nums[j];max_sum = max(max_sum, sum);}}return max_sum;}
};

贪心c++代码如下:

class Solution {
public:// 开贪!遇到总和为负的就重新开始int max_sum = INT_MIN;int sum = 0;int maxSubArray(vector<int>& nums) {for (int i = 0; i < nums.size(); ++i) {sum += nums[i];if (sum > max_sum) {max_sum = sum;}if (sum <= 0) {sum = 0; // 初始化--重新统计最大}}return max_sum;}
};

 注意点1:容易陷入误区,认为如果全是负数的序列就会返回0,但实际上维护的是max_sum,所以不存在该问题,仍然会返回序列单个最大值作为结果。

总结


打卡第27天,坚持!!!

相关文章:

代码随想录算法训练营:27/60

非科班学习算法day27 | LeetCode455:分发饼干 &#xff0c;Leetcode376:摆动序列 &#xff0c;Leetcode53:最大子数组和 介绍 包含LC的两道题目&#xff0c;还有相应概念的补充。 相关图解和更多版本&#xff1a; 代码随想录 (programmercarl.com)https://programmercarl.c…...

Redis 中String类型操作命令(命令演示,时间复杂度,返回值,注意事项)

String 类型 文章目录 String 类型set 命令get 命令mset 命令mget 命令get 和 mget 的区别incr 命令incrby 命令decr 命令decrby 命令incrbyfloat 命令append 命令getrange 命令setrange 命令 字符串类型是 Redis 中最基础的数据类型&#xff0c;在讲解命令之前&#xff0c;我们…...

2024亚太杯中文赛B题洪水灾害的数据分析与预测原创论文分享

大家好&#xff0c;从昨天肝到现在&#xff0c;终于完成了2024年第十四届 APMCM 亚太地区大学生数学建模竞赛B题洪水灾害的数据分析与预测的完整论文啦。 实在精力有限&#xff0c;具体的讲解大家可以去讲解视频&#xff1a; 2024亚太杯中文赛B题洪水灾害预测原创论文保姆级教…...

Oracle 19c 统一审计表清理

zabbix 收到SYSAUX表空间告警超过90%告警&#xff0c;最后面给出的清理方法只适合ORACLE 统一审计表的清理&#xff0c;传统审计表的清理SYS.AUD$不适合&#xff0c;请注意。 SQL> Col tablespace_name for a30 Col used_pct for a10 Set line 120 pages 120 select total.…...

PostgreSQL(二十二)缓冲区管理器

目录 一、缓冲区概述 1、缓冲区结构 2、buffer_tag结构 3、Backend进程读取操作 4、写脏块 二、缓冲区管理器结构 1、第一层&#xff1a;Buffer Table layer&#xff08;缓冲区表层&#xff09; 2、第二层&#xff1a;Buffer Descriptor Layer&#xff08;缓冲区描述层…...

流程制造业与离散制造业有何差异?流程行业智能制造关注什么?

在当今快速发展的工业领域&#xff0c;智能制造已经成为推动制造业转型升级的关键力量。随着“工业4.0”概念的提出&#xff0c;智能制造的理念和技术被广泛应用于各个制造行业&#xff0c;包括离散制造业和流程制造业。尽管智能制造的起源和发展在很大程度上受到了离散制造业的…...

【论文速读】《面向深度学习的联合消息传递与自编码器》,无线AI的挑战和解决思路

这篇文章来自华为的渥太华无线先进系统能力中心和无线技术实验室&#xff0c;作者中有大名鼎鼎的童文。 一、自编码架构的全局收发机面临的主要问题 文章对我比较有启发的地方&#xff0c;是提到自编码架构的全局收发机面临的主要问题&#xff1a; 问题一&#xff1a;基于随…...

C++从入门到起飞之——输入输出!

目录 1.命名空间 1.1namespace的价值 1.2namespace的定义 1.3命名空间使⽤ 2.C输⼊&输出 3.完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ C从入门到起飞 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己…...

米文AD10配置gmsl摄像头操作

一、进入桌面快捷方式 0、设置摄像头型号 miivii_websettings.desktop 设置摄像头 1、获取camera信息 cat /var/log/gmsl_camera.lognvidiamiivii-tegra:~$ cat /var/log/gmsl_camera.log attestationVerify [13] succeed. [INFO ]: miivii gmsl service start! [INFO ]: V…...

【Selenium配置】WebDriver安装浏览器驱动(ChromeEdge)

【Selenium配置】WebDriver安装浏览器驱动&#xff08;Chrome&Edge&#xff09; 文章目录 【Selenium配置】WebDriver安装浏览器驱动&#xff08;Chrome&Edge&#xff09;Chrome确认Chrome版本下载对应driver把解压后的chromedriver文件放在chrome安装目录下&#xff0…...

预测算法面试

这次面试的是一个预测算法的岗位。虽然我对供应链相关的预测很厌烦了&#xff0c;但是这个不是供应链领域的&#xff0c;感觉应该还好。 首先在介绍工作经历和项目部分&#xff0c;这次面试没有上来没有条理乱说一气&#xff0c;而是预测目标、算法架构、各种使用特征这些分层…...

号称世界上第一个开源实时翻译的 App,微软开源GraphRAG:极大增强大模型问答、摘要、推理,以及开源基于ChatGPT的超级文本代码智能体(附代码地址)

号称世界上第一个开源实时翻译的 App&#xff0c;微软开源GraphRAG&#xff1a;极大增强大模型问答、摘要、推理&#xff0c;以及开源基于ChatGPT的超级文本代码智能体&#xff08;附代码地址&#xff09; 在「端侧」上实现可离线的「实时同传」翻译&#xff0c;支持 29 语言的…...

PyTorch 2-深度学习-模块

PyTorch 2-深度学习-模块 一: pytorch1> pytorch 介绍2> pytorch 作用3> pytorch 优点4> pytorch 流程二:pytorch 模块1> torch.Tensor 模块2> torch.nn模块3> torch.nn.function模块4> torch.random模块5> torch.onnx模块6> torch.sparse模块7…...

【MyBatis】MyBatis 理论 40 问(二)

《MyBatis 理论 40 问》包含以下 2 篇文章&#xff1a; MyBatis 理论 40 问&#xff08;一&#xff09;MyBatis 理论 40 问&#xff08;二&#xff09; MyBatis 理论 40 问&#xff08;二&#xff09; 21.如何获取生成的主键&#xff1f;22.当实体类中的属性名和表中的字段名不…...

数据分析——Python网络爬虫(三){爬虫基本原理}

爬虫基本原理 爬虫基本流程拉取什么数据JavaScript渲染页面cookies爬虫代理检查robots.txt爬虫的攻与防 爬虫基本流程 • 获取网页源代码&#xff1a;通过库来实现&#xff0c;urllib&#xff0c;requests等实现http请求    • 提取信息&#xff1a;分析网页源代码&#xff0…...

Linux 忘记root密码,通过单用户模式修改

银河麒麟桌面操作系统 V10&#xff08;sp1&#xff09;”忘记用户密码&#xff0c;需要修改用户密码所写&#xff0c;可用于 X86 架构和 arm 架构。 2. 选择第一项&#xff0c;在上图界面按“e”键进行编辑修改。 3. 在以 linux 开头这行的行末&#xff0c;添加“init/bin/bas…...

安卓热门面试题二

什么是AndroidManifest.xml文件&#xff1f;它包含了哪些重要信息&#xff1f; AndroidManifest.xml文件是Android应用程序的全局配置文件&#xff0c;每个Android应用程序的根目录中都必须包含一个AndroidManifest.xml文件&#xff0c;且文件名不能修改。这个文件对于Android…...

agents 分类

一、分类 自动agent、半自动agent、领域、自定义sop和支持人为干预的agent。 先泼个冷水&#xff0c;目前这些agent项目都是实验品&#xff0c;发展还没有做知识库问答相关开源项目那么成熟&#xff0c; 二、全自动agent autoGPT、loopGPT、babyAGI 全自动agent就是人类不可…...

【期末考试复习】概率论与数理统计(知识点模式 - 复习题2)

题目&#xff1a; 设随机变量 X X X 的概率密度函数为 f ( x ) a b x f(x) a bx f(x)abx&#xff0c;其中 0 < x ≤ 1 0 < x \leq 1 0<x≤1&#xff1b; f ( x ) 0 f(x) 0 f(x)0&#xff0c;在其他情况下。已知 P ( X ≤ 1 / 2 ) 3 / 8 P(X \leq 1/2) 3/…...

Jetpack Compose实现一个简单的微信UI

https://blog.csdn.net/News53231323/article/details/128509048 https://franzliszt1847.blog.csdn.net/article/details/129344822...

HUNYUAN-MT惊艳翻译效果:专业领域长文档翻译案例集

HUNYUAN-MT惊艳翻译效果&#xff1a;专业领域长文档翻译案例集 最近在尝试各种翻译工具时&#xff0c;我偶然间用到了HUNYUAN-MT 7B模型来处理一些工作上的专业文档。说实话&#xff0c;一开始没抱太大期望&#xff0c;毕竟专业翻译的门槛不低&#xff0c;尤其是那些充满术语和…...

Android Studio中文界面汉化终极指南:5分钟打造舒适开发环境

Android Studio中文界面汉化终极指南&#xff1a;5分钟打造舒适开发环境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为An…...

DevOps工具链集成:GitLab CI、Jenkins与Argo CD如何选?

DevOps工具链集成&#xff1a;GitLab CI、Jenkins与Argo CD如何选&#xff1f; 在DevOps实践中&#xff0c;工具链的选型直接影响交付效率与系统稳定性。GitLab CI、Jenkins和Argo CD作为主流工具&#xff0c;分别覆盖持续集成&#xff08;CI&#xff09;、持续交付&#xff0…...

PXE装机避坑大全:从TFTP根目录设置到Kickstart无人值守的13个常见错误修复

PXE装机避坑大全&#xff1a;从TFTP根目录设置到Kickstart无人值守的13个常见错误修复 在企业级IT运维中&#xff0c;PXE&#xff08;预启动执行环境&#xff09;网络装机技术因其高效、自动化的特点&#xff0c;已成为服务器批量部署的标配方案。但看似简单的PXE部署流程背后&…...

Qwen3-14B项目管理助手:需求文档生成、甘特图描述、风险点预判

Qwen3-14B项目管理助手&#xff1a;需求文档生成、甘特图描述、风险点预判 1. 项目管理的AI革命 项目管理是一项复杂的工作&#xff0c;涉及需求分析、进度规划、资源调配和风险控制等多个环节。传统方式下&#xff0c;项目经理需要花费大量时间编写文档、绘制甘特图和评估风…...

Excel VBA实战:打造高精度自定义计时器

1. 为什么需要自定义计时器&#xff1f; 在实验室数据采集、运动训练计时、工业生产监控等场景中&#xff0c;我们经常需要精确记录时间间隔。虽然Excel自带的时间函数能解决部分需求&#xff0c;但遇到以下情况时&#xff0c;原生功能就显得力不从心&#xff1a; 毫秒级精度要…...

Scarab:让空洞骑士模组管理变得如此简单

Scarab&#xff1a;让空洞骑士模组管理变得如此简单 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经因为空洞骑士模组安装的复杂流程而头疼&#xff1f;是否在寻找依…...

千问3.5-2B效果对比评测:与Qwen-VL-Chat基础版在OCR精度和响应速度上的实测差异

千问3.5-2B效果对比评测&#xff1a;与Qwen-VL-Chat基础版在OCR精度和响应速度上的实测差异 1. 评测背景与模型介绍 视觉语言模型正在改变我们与图像交互的方式。作为Qwen系列的最新成员&#xff0c;千问3.5-2B以其轻量级架构和高效性能引起了广泛关注。本次评测将聚焦于两个…...

python基于flask的学生学业质量成绩分析系统演可视化大屏 大数据

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析可视化大屏设计大数据处理架构预警与决策支持技术实现要点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 数据采…...

ADNS3080光学传感器驱动开发与聚焦校准实战

1. ADNS3080光学运动传感器底层驱动技术解析ADNS3080是Avago&#xff08;现Broadcom&#xff09;推出的一款高精度、低功耗CMOS光学运动传感器&#xff0c;专为机械鼠标、轨迹球及工业位移检测等场景设计。其核心优势在于集成化程度高——片内集成了LED驱动电路、图像采集阵列&…...