代码随想录算法训练营第二十六天

题目:455. 分发饼干

贪心第一题 

这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。或者小饼干先喂饱小胃口

首先要对 g 和 s进行排序这样才能知道最大的胃口和最大的饼干然后进行遍历即可

两种方法代码如下:

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int index = 0;for(int i = 0; i < s.size(); i++) { // 饼干 先小的满足小的if(index < g.size() && g[index] <= s[i]){ // 胃口index++;}}return index;}
};class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int index = s.size() - 1; // 饼干数组的下标  int result = 0;for (int i = g.size() - 1; i >= 0; i--) { // 遍历胃口if (index >= 0 && s[index] >= g[i]) { // 遍历饼干result++;index--;}}return result;}
};

题目:376. 摆动序列

这题确实自己想复杂了 自己在想如何删除元素 因为最后只要计数确实最简单的方法就是遇到峰值就++ 单调的就不++

但是这道题目写代码的话细节还是很多的 需要看视频考虑多种情况

这里的局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),这个坡度就可以有两个局部峰值

这是我们思考本题的一个大体思路,但本题要考虑三种情况:

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

完整代码如下:

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {if (nums.size() <= 1) return nums.size();int curDiff = 0; // 当前一对差值int preDiff = 0; // 前一对差值int result = 1;  // 记录峰值个数,序列默认序列最右边有一个峰值for (int i = 0; i < nums.size() - 1; i++) {curDiff = nums[i + 1] - nums[i];// 出现峰值if ((preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0)) {result++;preDiff = curDiff; // 注意这里,只在摆动变化的时候更新prediff}}return result;}
};

题目:53. 最大子数组和

暴力解法的思路,第一层 for 就是设置起始位置,第二层 for 循环遍历数组寻找最大值

class Solution {
public:int maxSubArray(vector<int>& nums) {int result = INT32_MIN;int count = 0;for (int i = 0; i < nums.size(); i++) { // 设置起始位置count = 0;for (int j = i; j < nums.size(); j++) { // 每次从起始位置i开始遍历寻找最大值count += nums[j];result = count > result ? count : result;}}return result;}
};

使用贪心的话 就是寻找局部极大值 

如果 -2 1 在一起,计算起点的时候,一定是从 1 开始计算,因为负数只会拉低总和,这就是贪心贪的地方!

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

全局最优:选取最大“连续和”

局部最优的情况下,并记录最大的“连续和”,可以推出全局最优

那有同学问了,区间终止位置不用调整么? 如何才能得到最大“连续和”呢?

区间的终止位置,其实就是如果 count 取到最大值了,及时记录下来了。

class Solution {
public:int maxSubArray(vector<int>& nums) {int result = INT32_MIN;int count = 0;for (int i = 0; i < nums.size(); i++) {count += nums[i];if (count > result) { // 取区间累计的最大值(相当于不断确定最大子序终止位置)result = count;}if (count <= 0) count = 0; // 相当于重置最大子序起始位置,因为遇到负数一定是拉低总和}return result;}
};

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

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

相关文章

I/O Stream设计实验

实验要求和目的 深入理解java输入输出流相关类的基本用法&#xff0c;并且可以掌握Java程序的编写和调试。 实验环境 Java语言&#xff0c;PC或android平台 实验具体内容 设计和编写以下程序&#xff1a; 程序1&#xff1a; 从键盘读入多行字符串&#xff08;英文&#xf…

(第32天) 513、找树左下角的值 112、路径总和 113、路径总和II

目录 513、找树左下角的值题目描述思路代码112、路径总和题目描述思路代码113、路径总和II题目描述思路代码思考总结513、找树左下角的值 题目描述 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 思路 题目分析:…

ElasticSearch是什么?有哪些应用?有哪些优缺点?

ElasticSearch是什么&#xff1f;有哪些应用&#xff1f;有哪些优缺点&#xff1f; Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;设计用于实时、大规模数据的搜索和分析。它基于Apache Lucene构建&#xff0c;但通过提供一套简单易用的RESTful API、分布式特性…

Web前端接口探秘:深入解析四大方面、五大维度、六大关键及七大实践

Web前端接口探秘&#xff1a;深入解析四大方面、五大维度、六大关键及七大实践 在Web前端开发的广阔领域中&#xff0c;接口作为连接前后端的关键桥梁&#xff0c;扮演着至关重要的角色。本文将带领读者一同深入探索Web前端接口的四大方面、五大维度、六大关键及七大实践&…

Go语言中的函数项模式

函数项模式&#xff08;Functional Options Pattern&#xff09;是一种创造性的设计模式&#xff0c;允许使用接受零个或多个函数作为参数的可变构造函数来构建复杂结构 在没有函数项模式之前&#xff0c;在包初始化加载配置选项的时候&#xff0c;一般有两种做法 编写不同的构…

【微信小程序 事件绑定】

事件绑定 条件渲染 1. block包裹性容器&#xff1a;条件成立渲染 <block wx:if"{{ true }}"><block wx:if"{{true}}"><view>view1</view><view>view2</view> </block>2. wx:if&#xff1a;动态创建移除元素控…

农情监测系统的工作原理

TH-Q3农情监测系统是指利用现代信息技术手段&#xff0c;对农田环境进行实时监测、数据采集、传输和处理&#xff0c;以实现对农田环境的全面感知和智能管理[1]。该系统通过安装各种传感器和监测设备&#xff0c;能够实时监测农田的气象、土壤、植被和其他相关数据&#xff0c;…

VXLAN技术揭秘:实现大规模网络隔离与虚拟机无缝迁移

VXLAN简介 定义 VXLAN&#xff08;Virtual eXtensible Local Area Network&#xff0c;虚拟扩展局域网&#xff09;是由RFC定义的一种VLAN扩展方案。VXLAN采用MAC in UDP&#xff08;User Datagram Protocol&#xff09;封装方式&#xff0c;是NVO3&#xff08;Network Virtu…

KOL营销策略:危机公关中的品牌修复与形象重塑

在当今数字化时代&#xff0c;品牌声誉的管理和维护愈发重要。危机公关作为品牌管理的重要一环&#xff0c;对于企业的长期生存和发展具有至关重要的影响。而KOL作为具有强大影响力和号召力的个体&#xff0c;在危机公关中扮演着不可或缺的角色。本文Nox聚星将和大家探讨KOL在危…

男士内裤哪个牌子质量好又舒服?2024男士内裤舒适度排行

男士内裤&#xff0c;不仅仅是一件简单的衣物&#xff0c;更是健康与舒适的关键守护者。作为每位男士的私密伙伴&#xff0c;它承载着每一天的舒适体验与健康保障。因此&#xff0c;选择一款合适的内裤&#xff0c;对男士们来说&#xff0c;显得尤为重要。 我们为您精心总结了…

国标GB28181安防视频监控EasyCVR平台级联时上级平台不显示通道是什么原因?

国标GB28181安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台部署轻快&#xff0c;可支持的主流标准协议有GA/T 1400、国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。 有用户反馈&#xff…

Linux 基本指令1

ls指令 ls【-选项】【目录或文件】当不指定目录或文件时指令能列出当前目录下所有文件除隐藏文件 选项&#xff1a; -a 列出所有包括隐藏的文件-隐藏文件以.开头。 -d 将目录如文件般显示-一般用ls显示目录是显示其目录中所有文件&#xff0c;加-d则显示目录的信息 -r 以反…

22 CRT工具安装流程

22 CRT工具安装流程 SecureCRT 9.5 说明书 SecureCRT 9.5是一款由VanDyke Software开发的终端仿真程序。它为Windows、Mac和Linux操作系统提供了强大的SSH&#xff08;Secure Shell&#xff09;客户端功能。SecureCRT 9.5提供了对Telnet、RLogin、Serial和X.509等协议的支持&…

【安卓设备】通过adb批量安装apk

1、adb链接设备 H:\tv\apk>adb connect 127.0.0.1:21503 2、批量安装apk 如果地址不一致需要将 H:\tv\apk\ 改成自己的路径地址&#xff0c;同时注意该命令只能安装文件名为英文的不支持中文名称&#xff0c;如果有需要先更改文件名称。 H:\tv\apk>for %f in (H:\tv\a…

技术速递|介绍 .NET API 文档的源代码链接

作者&#xff1a;Min Huang&#xff0c;Matt Trilby-Bassett 排版&#xff1a;Alan Wang 开发人员在阅读 API 参考文档时&#xff0c;有时会需要或希望查看相应的源代码。直到不久之前&#xff0c;.NET API 参考文档还没有提供指向源代码的链接&#xff0c;这引起社区添加这一功…

借助ChatGPT撰写学术论文,如何设定有效的角色提示词指

大家好&#xff0c;感谢关注。这个给大家提供关于论文写作方面专业的讲解&#xff0c;以及借助ChatGPT等AI工具如何有效辅助的攻略技巧。有兴趣的朋友可以添加我&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就…

12. Django 第三方功能应用

12. 第三方功能应用 因为Django具有很强的可扩展性, 所以延伸了第三方功能应用. 通过本章的学习, 读者能够在网站开发过程中快速实现API接口开发, 验证码生成与使用, 站内搜索引擎, 第三方网站实现用户注册, 异步任务和定时任务, 即时通信等功能.12.1 Django Rest Framework框…

【区块链】记账的千年演化:从泥板到区块链

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 记账的千年演化&#xff1a;从泥板到区块链引言一、古代记账&#xff1a;泥板与…

2024 年勒索软件将比以往更加残酷

如今&#xff0c;世界各地的人们去学校、去医院或去药店时&#xff0c;都会被告知&#xff1a;“抱歉&#xff0c;我们的计算机系统瘫痪了。” 罪魁祸首往往是在世界另一端活动的网络犯罪团伙&#xff0c;他们会要求人们支付系统访问费用或安全归还被盗数据。 尽管警方加大打…

[vue2]深入理解vuex

本节内容 概述初始化仓库定义数据访问数据修改数据处理异步派生数据模块拆分案例-购物车 概述 vuex是一个vue的状态管理工具, 状态就是数据 场景 某个状态在很多个组件使用 (个人信息)多个组件 共同维护 一份数据 (购物车) 优势 数据集中式管理数据响应式变化 初始化仓库 …