7月26日贪心练习-摆动序列专题

news2024/9/24 11:27:57

前言

大家好,今天学习用贪心思想解决摆动序列问题,共三题,分享自己的思路,请大家多多支持

算法思想

大家可以先看看这道我们后面会讲的题看看怎么个事,. - 力扣(LeetCode)

由此题题解说明算法原理,我们可以吧摆动序列的数据放在折线图里,它的大致走向如下

每根线上都可以看作有一个或多个点,这个时候可以想到最大摆动长度就是折线弯折次数(水平的线不计入)自然会想到统计折线的极大值和极小值个数来确定直线,不过对于本题,时候在直线走完后,还会出现两种情况一是直线出来往上走,这个时候正常统计极大和极小值数

红线代表实际的摆动,还有就是往下走,这个时候折线数还是4次

可以知道两种情况都是可以忽略平线的

这类题的贪心就体现在我们在找折线时,总是往后找到折线向上(或向下)能到达的最大高度,这体现了贪心的思想,下面我们具体题目具体分析

1.摆动序列

ok,那么接着上面的题继续往下讲代码实现,我们可以用两个变量实现这题,我们需要一个变量总是记录数组中每一个数据与上一个数据的差值,另一个记录上一个波峰或波谷出现的位置差值,对于平线的情况,可以看出它差值是0,不会让折线数增加,跳过即可,线最后返回值加上结尾的折数

代码

class Solution {
    public int wiggleMaxLength(int[] nums) {
        int  ret=0;
        int left=0;
        for(int i=0;i<nums.length-1;i++){
            int right=nums[i+1]-nums[i];
             if(right==0){
                continue;
            }
            if(right*left<=0){
                ret++;
                left=right;
            }
        }
        return ret+1;

    }
}

2.最长连续递增序列

. - 力扣(LeetCode)

“连续”把这道题难度降低了许多,结合摆动序列思想,暴力+一点贪心就可以很快解决这题

class Solution {
    public int findLengthOfLCIS(int[] nums) {  
        int slow=0;
        int fast=0; 
        int count=0;
        while(fast<nums.length){
            int p=fast+1;
            while(p<nums.length
            &&nums[p]>nums[p-1]){
                p++;
            }
            count=Math.max(count,fast-slow);
            slow=fast;
        }
        return count;
    }
}

贪心就体现在我们每次更新slow时不用++而是直接更新到fast停止递增的位置

3.递增的三元子序列

. - 力扣(LeetCode)

思路是类似的,因为是三元所以给了两个a,b,来统计递增个数是否有三个

class Solution {
    public boolean increasingTriplet(int[] nums) {
        int a=nums[0];
        int b=Integer.MAX_VALUE;
        for(int i=0;i<nums.length;i++){
            if(nums[i]>b){
                return true;
            }else if(nums[i]>a){
                b=nums[i];   
            }else{
                a=nums[i];   
            }
        }
        return false;
    }
}

好啦,本期博客就到这里,谢谢大家

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

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

相关文章

uniapp手写滚动选择器

文章目录 效果展示HTML/Template部分&#xff1a;JavaScript部分&#xff1a;CSS部分&#xff1a;完整代码 没有符合项目要求的选择器 就手写了一个 效果展示 实现一个时间选择器的功能&#xff0c;可以选择小时和分钟&#xff1a; HTML/Template部分&#xff1a; <picker…

谷粒商城实战笔记-66-商品服务-API-品牌管理-JSR303数据校验

文章目录 一&#xff0c;引入JSR 303依赖二&#xff0c;接口参数启用校验功能三&#xff0c;给字段添加校验注解NotBlank 和 NotNull 的区别NotBlankNotNull比较 四&#xff0c;BindingResult获取校验结果五&#xff0c;自定义错误消息六&#xff0c;其他校验规则 在Web应用程序…

如何对视频文件加密_如何加密视频文件_视频文件如何加密

“嘿&#xff0c;小李&#xff0c;你知道咱们公司的新项目资料都是视频形式的吗&#xff1f;这些视频里有很多机密信息&#xff0c;我们需要好好保护起来。” “是啊&#xff0c;我也在想这个问题。你有没有什么好办法来加密这些视频文件呢&#xff1f;” “我听说有个叫域智盾…

html+css前端作业 王者荣耀官网1个页面(带报告)

htmlcss前端作业 王者荣耀官网1个页面&#xff08;带报告&#xff09; 下载地址 https://download.csdn.net/download/qq_42431718/89575045 目录1 目录2 项目视频 王者荣耀首页1个页面&#xff08;无js&#xff09; 页面1

推荐|政务网站部署哪种SSL证书?如何申请?

政务网站作为面向公众提供政务服务的官方平台&#xff0c;对信息安全和公信力有极高的要求。因此&#xff0c;在部署SSL证书时&#xff0c;应慎重选择。下面是关于政务网站SSL证书选择的一些建议&#xff1a; 一、推荐的SSL证书类型 1 选择数据不出境&#xff0c;国内验签的证…

多模态论文一:CLIP模型主要内容讲解【原理+代码】

一、CLIP模型主要内容讲解 CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;是OpenAI在2021年发布的一种用于图像和文本联合表示学习的模型。CLIP的核心思想是通过对比学习来预训练一个模型&#xff0c;使其能够理解图像和文本之间的关系。以下是CLIP的工…

Ruoyi-WMS本地运行

所需软件 1、JDK&#xff1a;8 安装包&#xff1a;https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmlopen in new window 安装文档&#xff1a;https://cloud.tencent.com/developer/article/1698454open in new window 2、Redis 3.0 安装包&a…

【STM32 FreeRTOS】FreeRTOS的移植

其实这篇文章不侧重移植&#xff0c;因为我们会使用CubeMX配置&#xff0c;那样会自动移植FreeRTOS。 关于FreeRTOS&#xff0c;可以参考官网&#xff1a;FreeRTOS - Quick start guide 当我们在CubeMX中配置了CMSIS_V2后尝试编译的时候会有一个弹窗。 第一个问题就是强烈建议…

ubuntu实践

目录 扩容 本机上ping不通新建立的虚拟机 ssh连接 装sshd ssh客户端版本较低&#xff0c;会报key exchange算法不匹配问题 ubuntun上装docker 将centos7下的安装包改造成适配 ubuntu的包 参考文章 扩容 Hyper-V 管理器安装的ubutun扩容磁盘空间说明_hype-v磁盘扩容-…

私域电商丨软件系统开发中,一定要避开的几个坑,看懂少很多弯路

文丨微三云胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 大家好&#xff0c;我是软件开发胡佳东&#xff0c;每天为大家分享互联网资讯干货&#xff01; 在数字化时代的今天&#xff0c;软件开发是已经成为推动科技进步和商业发展的重要…

【软件推荐】“聊崽”聊天机器人

不是广告&#xff01;不是广告&#xff01;不是广告&#xff01; 自己小团队开发的产品&#xff0c;现在正在公测。 前言 什么是聊天机器人&#xff0c;将你自己的微信接入机器人系统&#xff0c;让你的微信能够具备智能客服、游戏交互、问题解答、气氛活跃等能力。 同样的问…

本地化部署一个简单的AI大模型,Llama3.1

7 月 23 日消息&#xff0c;Meta 今晚正式发布llama3.1&#xff0c;提供 8B、70B 及 405B 参数版本。 Meta 称 4050 亿参数的 Llama 3.1-405B 在常识、可引导性、数学、工具使用和多语言翻译等一系列任务中&#xff0c;可与 GPT-4、GPT-4o、Claude 3.5 Sonnet 等领先的闭源模型…

python-绝对值排序(赛氪OJ)

[题目描述] 输入 n 个整数&#xff0c;按照绝对值从大到小排序后输出。保证所有整数的绝对值不同。输入格式&#xff1a; 输入数据有多组&#xff0c;每组占一行&#xff0c;每行的第一个数字为 n ,接着是 n 个整数&#xff0c; n0 表示输入数据的结束&#xff0c;不做处理。输…

实现领域驱动设计(DDD)系列详解:领域模型的持久化

领域驱动设计主要通过限界上下文应对复杂度&#xff0c;它是绑定业务架构、应用架构和数据架构的关键架构单元。设计由领域而非数据驱动&#xff0c;且为了保证定义了领域模型的应用架构和定义了数据模型的数据架构的变化方向相同&#xff0c;就应该在领域建模阶段率先定义领域…

【MSP430】DriverLib库函数,GPIO相关函数介绍

采用了DriverLib库函数&#xff0c;以下是对GPIO相关函数的介绍 MSP430F5xx_6xx_DriverLib_Users_Guide-2_91_13_01(函数库手册).pdf 在MSP430单片机中&#xff0c;GPIO相关的函数提供了一套完整的接口用于配置和控制GPIO引脚。这些函数可以方便地管理引脚的输入输出模式、电平…

【微信小程序实战教程】之微信小程序 WXS 语法详解

WXS语法 WXS是微信小程序的一套脚本语言&#xff0c;其特性包括&#xff1a;模块、变量、注释、运算符、语句、数据类型、基础类库等。在本章我们主要介绍WXS语言的特性与基本用法&#xff0c;以及 WXS 与 JavaScript 之间的不同之处。 1 WXS介绍 在微信小程序中&#xff0c…

利用换元法计算积分的常见题型(考研高数复习)

考研中常见的几种换元法积分计算题 (1)被积式仅包含一个根式&#xff1a;根号下为有 a a a 和 x x x 的平方和/平方差 此种类型的积分题型&#xff0c;可以通过构造单个锐角大小为 t t t 的直角三角形&#xff0c;利用勾股定理和三角函数进行代换。 平方和的情况 形如 ∫…

40V/4.5A的AH6240直接替代PT2470的直流有刷电机驱动芯片

135-3806-7573本文将详细介绍AH6240直流有刷电机驱动芯片如何直接替代PT2470&#xff0c;并探讨其在实际应用中的优势。 一、AH6240与PT2470的对比分析 AH6240是一款高性能的直流有刷电机驱动芯片&#xff0c;具有40V/4.5A的输出能力&#xff0c;支持宽电压范围输入&#xff0…

【Android】Activity生命周期与四种启动模式

文章目录 生命周期返回栈Activity状态生命周期方法 启动模式standard模式singleTask模式singleTop模式singleInstance模式配置方式 生命周期 返回栈 每个Activity的状态由它在Activity栈&#xff08;又叫“回退栈back stack”&#xff09;中的位置决定&#xff0c;是所有当前…

scratch笔记

一、图章 练习题&#xff1a; 【画笔】 一、选择题 1.怎样修改图章的颜色&#xff1f;&#xff08;D &#xff09; A. 只需要一个数字来设置颜色 B. 设置RGB的值 C. 在画笔中设置颜色、饱和度、亮度 D. 在外观中设置或修改角色颜色特效 2.执行下面程序&#xff0c;最后可能出…