代码随想录训练营day27|455.分发饼干,376.摆动序列,53. 最大子序和

news2024/9/24 17:08:45

分发饼干

题目

思路:把最大的饼干分给胃口最大的人,所以可以先对两个数组进行排序,然后用双指针从后往前依次比较。如果饼干能成功头尾,就让饼干组的指针往前移

int bisc=s.size()-1;
int i=g.size()-1;//小孩组
for(;i>=0;i--){
	if(s[bisc]>=g[i])
		count++;bisc--;
}

摆动序列

题目
最开始这题我的思路是用双指针pre和cur,

int cha=nums[cur]-nums[pre];

如果cha>0,就一直往前找,找到这单调递增的顶点,
然后把它赋给pre,这样pre就是图中虚线的部分。
在这里插入图片描述

if(cha>0){
	count++;
	while(cur<nums.size()-1&&nums[cur+1]>nums[cur]){
		cur++;//这样刚好停在顶峰	
	}
	pre=cur;
}

cha<0同理,然后在for循环里每次cur++;指向下一个,这样即使是碰到相同的也可以直接跳过。

问题来了

如果这样写,碰到[1,2,2,2,3]的数据时,摆动序列长度应该是2的,但是pre=1,cur=2时count++;然后到pre=2,cur=3时仍然是count++;所以应该考虑定义两个差值,一个记录前一个差值,一个记录当前的差值,如果这两个差值异号才能count++

int prediff=0;
int pre=0;
for(int cur=1;cur<nums.size();cur++){
	int curdiff=nums[cur]-nums[pre];
	if(cha>0){
		if(prediff*curdiff<=0)
			count++;
		while(cur<nums.size()-1&&nums[cur+1]>nums[cur]){
			cur++;//这样刚好停在顶峰	
		}
		pre=cur;
	}
	.....
}

另一种写法

算一个点的左边差值和右边差值,如果左边和右边异号则结果++;

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

只用在坡度有变化时更新就行了

最大自序和

题目
最开始我想的是从两边找连续的最小数组和,然后用总和减去他们就是答案,但事实上这两个数组可能会有交叉的部分,1,-1,1;
而且要分类讨论的情况还很多,非常之麻烦。

其实只用在一段数组它的sum<0时,果断把它甩走,然后从下一位开始重新计数就行,因为它对于之后的部分,不管怎样都是起到一个拖累的作用。

int sum=0;
int ans=nums[0];
for(int i=0;i<nums.size();i++){
	sum+=nums[i];
	ans=max(ans,sum);
	if(sum<0)
		sum=0;
}
return ans;

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

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

相关文章

【摆脱被360安全卫士荼毒:使用这2个软件就够了】

保持电脑健康从拒绝使用360安全卫士开始 提示&#xff1a;不使用360安全卫士&#xff0c;电脑更健康 游戏本被360卫士荼毒的差点报废&#xff0c;感觉在使用360安全卫士后&#xff0c;笔记本的散热风扇很暴躁&#xff0c;笔记本经常高温不退&#xff0c;若你也有这样的烦恼&am…

单元格里显示曲线

想要实现的效果如下&#xff1a;表格每一行都有一个曲线 TreeList与GridControl的设置方法类似。 1、先创建控件的数据源&#xff0c;我使用的是DataTable /// <summary>/// 生成一个DataTable/// </summary>/// <returns></returns>public static Da…

【c++】强制类型转化

一、前言 在C语言中新增了四个关键字static_cast、const_cast、reinterpret_cast和dynamic_cast。这四个关键字都是用于强制类型转换的。 新类型的强制转换可以提供更好的控制强制转换过程&#xff0c;允许控制各种不同种类的强制转换。 C中风格是static_cast<type>(c…

进阶SpringBoot之 SpringSecurity(2)用户认证和授权

Spring Security 官网 Spring Security 是针对 Spring 项目的安全框架 也是 Spring Boot 底层安全模块默认的技术选型 它可以实现强大的 Web 安全控制 只需引入 spring-boot-starter-security 模块&#xff0c;进行少量配置&#xff0c;即可实现强大的安全管理 几个重要的…

首款国产“3A”游戏《黑神话:悟空》爆火,背后有哪些AI技术在助力?

近日&#xff0c;沉淀了4年的首款国产“3A”游戏《黑神话悟空》正式在各大游戏交易平台上线。 据市场研究公司VG Insights 周四晚间发布预估数据&#xff0c;《黑神话&#xff1a;悟空》自发售以来&#xff0c;三天内在 Steam 平台的销量已突破 840 万份&#xff0c;好评率超 …

速腾32线激光雷达使用方法

速腾32线激光雷达 12V电源 实体机ubuntu22.04 ROS2-humble 一、软件安装 mkdir robosense_ws cd robosense_wsmkdir src && cd src/ git clone https://github.com/RoboSense-LiDAR/rslidar_msg.git git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.gi…

数学基础(六)

一、分布 正态分布 二项式分布 均匀分布 卡方分布 二、核函数 核函数的目的&#xff1a; 将低维数据转换为高维数据 线性核函数&#xff1a; Linear核函数对数据不做任何变换 当特征已经比较丰富了&#xff0c;样本数据量巨大&#xff0c;需要进行实时得出结果时进行使用…

【GH】【EXCEL】P3: Set Conditional Formatting To Excel Data By Gh

文章目录 conditional formattingdata sourceConditional ScaleConditional Scale Conditional PercentConditional Top Percent Conditional AverageConditional Average Multiple ConditionsConditional BarConditional Bar Conditional UniqueConditional Unique Conditiona…

JUC7-共享模型之工具

线程池 自定义线程池 import lombok.extern.slf4j.Slf4j; import org.springframework.core.log.LogDelegateFactory;import java.util.ArrayDeque; import java.util.Deque; import java.util.HashSet; import java.util.concurrent.TimeUnit; import java.util.concurrent.l…

git常用操作合集

1 撤销 1.1 适用场景 如果在git上提交了commit&#xff0c;但是当前提交的代码有问题&#xff0c;需要回退到上个版本 1.2 操作命令 1、git log 查看历史提交记录及对应的commit id 找到需要回退的commit id 2、执行git reset回退到之前的状态 git reset --hard <commi…

BaseCTF [第一周]Ez Xor

笔记。 64ida打开。 走&#xff01; 逆向逆向&#xff0c;逆向往前看。 因为异或算法&#xff0c;A ^BC >>> C^BA 所以在只需要知道密钥key就可以了。 是不是头大&#xff1f; 没事 这里介绍另一种方法>>> IDA 动态调试去获取key值、密文值 。(灵活使用工…

编写程序调用元神操作系统的API

1. 背景 本文介绍了元神操作系统API的调用&#xff0c;并详细介绍了“调用元神系统API读取磁盘扇区”程序的编写以及测试结果。 2. 方法 &#xff08;1&#xff09;元神操作系统API的调用方法 元神操作系统0.4版beta4开始提供了对OS功能的调用&#xff0c;调用相关的定义如…

整形提升

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 整型提升 (Integral Promotion)是指在计算机编程中&#xff0c;当不同类型的整数类型进行运算时&#xff0c;较小类型的整数会被自动转换为更大类型的整数&#xff0c;以确保运算的正确进行。这种类型转换主…

【生日视频制作】公司前台接待文化形象墙字写字楼办公室AE模板修改文字软件生成器教程特效素材【AE模板】

公司前台形象墙写字楼办公室生日视频制作教程AE模板修改文字素 怎么如何做的【生日视频制作】公司前台接待文化形象墙字写字楼办公室AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤&#xff1a; 安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染…

STM32寄存器操作、模板构建

目录 外设寄存器查找 ① 名称② 偏移地址③ 寄存器位表④ 位功能说明寄存器基本操作 C语言的置位和清零 具体方法设置GPIO流程给寄存器赋值带参数宏STM32F1xx 芯片识别存储器映射寄存器映射让GPIOB端口的16个引脚输出高电平&#xff0c;要怎么实现&#xff1f;STM32寄存器映射…

探索大语言模型在DNA 分析到表达预测以及生物信息学应用

概述 论文地址&#xff1a;https://arxiv.org/abs/2401.04155 随着 OpenAI 的 GPT-X 和谷歌的 BERT 等大规模语言模型的出现&#xff0c;自然语言处理领域得到了飞速发展。这些先进的模型将理解和生成人类语言的能力发挥到了极致&#xff0c;彻底改变了日常交流和业务流程。 …

premiere2023暴力压缩视频

目录 1. 需求说明2. 压缩流程 1. 需求说明 要将三段视频拼接起来&#xff0c;时长超过了1h&#xff0c;然后压缩到200M以内的视频。 这是三段视频的信息&#xff1a; 合并三个视频文件意味着总时长增加了。较长的视频文件通常也会更大&#xff0c;即使比特率相同。 当我把三段…

分治算法的介绍与原理解析

文章目录 1.分治算法1.1 如何判断分治问题1.2 为什么通过分治可以提升效率1.2.1 操作数量的优化1.2.2 并行计算优化 1.3 分治常见应用 1.分治算法 分治&#xff08;divide and conquer&#xff09;&#xff0c;全称是分而治之&#xff0c;是一种非常重要且非常常见的算法。分治…

【SQL基础】【牛客网】子查询、联表查询

子查询 基本语法 子查询&#xff0c;也称为嵌套查询&#xff0c;是在另一个 SQL 语句中嵌套的查询。子查询的结果可以被主查询&#xff08;外部查询&#xff09;使用&#xff0c;用于满足更复杂的数据检索需求。 例如&#xff1a; SELECT employee_name FROM employees WHE…

优化的热点分析与异常值分析:让数据分析更加便捷高效

热点分析作为一种常用的空间统计方法&#xff0c;能够帮助我们识别地理空间中的热点和冷点区域&#xff0c;即那些高值或低值集中出现的地方。而优化的热点分析进一步简化了这一过程&#xff0c;使用户无需手动调整参数即可获得可靠的结果。此外&#xff0c;异常值分析则专注于…