当前位置: 首页 > 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...

myeclipse开发ssm框架项目图书管理系统 mysql数据库web计算机毕业设计项目

摘 要 随着计算机的广泛应用&#xff0c;其逐步成为现代化的标志。图书馆的信息量也会越来越大&#xff0c;因此需要对图书信息、借书信息、还书信息等进行管理&#xff0c;及时了解各个环节中信息的变更&#xff0c;要对因此而产生的单据进行及时的处理&#xff0c;为了提高高…...

网络安全防御 -- 防火墙安全策略用户认证综合实验

实验拓扑&#xff1a; 实验目的&#xff1a; 1、DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问。 2、生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网。 3、办公区设备10.0.2.10不允许访问DM…...

捷配笔记-PCB阻焊颜色对产品有什么影响?

阻焊层也称为阻焊层或阻焊剂。它是一种薄的聚合物层&#xff0c;应用于&#xff08;PCB&#xff09;。阻焊层的目的是保护PCB表面&#xff0c;并有助于防止焊桥。焊桥是两个导体之间的无意连接&#xff0c;通常是由于存在一小块焊料。需要注意的是&#xff0c;阻焊层被视为其单…...

网信大数据信用报告查询怎么查?网信大数据有什么作用?

随着互联网的快速发展&#xff0c;大数据技术已经广泛应用于各行各业。其中&#xff0c;网信大数据信用报告查询成为了许多人关注的焦点。那么&#xff0c;如何查询网信大数据信用报告呢?网信大数据又有哪些作用呢?本文将为您一一解答。 一、如何查询网信大数据信用报告? 要…...

【Vue】vue-element-admin组件化功能

1. 组件的封装 在vue-element-admin中&#xff0c;每个功能区域或UI元素都被封装成一个或多个Vue组件。这些组件可以是简单的按钮、输入框&#xff0c;也可以是复杂的表格、表单或页面布局。每个组件都包含了其模板&#xff08;HTML结构&#xff09;、逻辑&#xff08;JavaScr…...

[论文笔记]涨点近5%! 以内容中心的检索增强生成可扩展的级联框架:Pistis-RAG

引言 今天带来一篇较新RAG的论文笔记&#xff1a;Pistis-RAG: A Scalable Cascading Framework Towards Content-Centric Retrieval-Augmented Generation。 在希腊神话中&#xff0c;Pistis象征着诚信、信任和可靠性。受到这些原则的启发&#xff0c;Pistis-RAG是一个可扩展…...

时钟系统框图(时钟树)解析

时钟系统框图&#xff08;时钟树&#xff09;解析 文章目录 时钟系统框图&#xff08;时钟树&#xff09;解析1、时钟树2、 4个时钟源&#xff1a;HSI、HSE、LSI、LSE3、PLL锁相环倍频输出4、系统时钟的来源5、Enable CSS&#xff08;时钟监视系统&#xff09;6、几个重要的时钟…...

DNS缓存详解

目录 一、缓存分类 1. 客户端缓存&#xff08;以浏览器缓存为列&#xff09; 2. 操作系统缓存 3.本地hosts文件静态映射 二、DNS查找优先顺序 1.浏览器查找顺序 2.cmd ping查找顺序&#xff08;非浏览器&#xff09; 一、缓存分类 在一台终端上&#xff0c;DNS缓存可以…...

一款好用的特殊字符处理工具

跟mybatis代码的时候&#xff0c;偶然发现的一款特殊字符处理工具java.lang.StringTokenizer。平常&#xff0c;我们看到的mybatis mapper.xml里面各种换行各种缩进&#xff0c;但日志文件里面的sql都是整整齐齐的。没有换行符&#xff0c;缩进等。就是利用该工具做的格式化处理…...

双重锁定:零信任沙箱 完美的安全保障

在当今数字化的世界中&#xff0c;企业的数据安全已成为至关重要的一环。随着云计算、移动互联和物联网等新技术的不断发展&#xff0c;传统的安全边界逐渐模糊&#xff0c;访问控制模式的局限性也日益凸显。为了应对这些挑战&#xff0c;零信任安全模型和苏州深信达的SDC沙盒技…...

做产品批发的网站/网站推广优化之八大方法

【Unity 2017 4.32f1】解决System.Drawing.dll问题 从网上下载的System.Drawing.dll会有问题&#xff0c;运行时和Unity本身的不兼容报错 Could not load type System.Drawing.Imaging.ColorPalette from assembly ... 解决方法&#xff1a;https://wenku.baidu.com/view/b…...

阿里云上做网站套模板怎么做/宁波正规站内优化seo

PL/SQL编程 目标&#xff1a; 1.掌握pl/sql概念 2.掌握pl/sql编程技术&#xff0c;包括编写过程、函数、触发器等 一、pl/sql基础介绍 1.pl/sql是什么&#xff1f; pl/sql&#xff08;procedural language/sql&#xff09;是Oracle在标准的sql语言上的扩展。pl/sql不仅允许嵌入…...

做网站实现登陆功能/seo优化排名教程百度技术

ubuntu dpkg 依赖问题处理 使用 apt-get 安装软件期间&#xff0c;如果出现意外中断的情况&#xff0c;下次安装时会出现 dpkg 的一系列依赖问题&#xff0c;提示如下 :: dpkg: error processing parted (--configure):dependency problems - leaving unconfigured dpkg: depen…...

织梦做的网站后台怎么进/实体店怎么引流推广

最近做城市天气相关的项目&#xff0c;找到一些资源给大家分享一下。 <?xml version"1.0" encoding"UTF-8"?><China><province id"01" name"北京"><city id"0101" name"北京"><cou…...

wordpress内存优化/写软文怎么接单子

数组的解构赋值 1.基本用法ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.可以从数组中提取值,按照位置的对应关系对变量赋值.本质上,这种写法属于模式匹配,只要等号两边的模式相同,左边的变量就会被赋予对应的值. var [a, b, c] [1, 2, 3]; var [d,…...

佛山门户网站建设/品牌宣传推广文案

layer.load()只在火狐浏览器中正常展示&#xff0c;其他浏览器中都不展示。最后发现是ajax设为同步导致的&#xff0c;当ajax为同步时&#xff0c;js会停止渲染导致load弹框失效&#xff0c;解决方法是将ajax设为异步...