【算法刷题 | 贪心算法02】4.24(摆动序列)

news2024/12/23 20:45:09

在这里插入图片描述

文章目录

  • 3.摆动序列
    • 3.1题目
    • 3.2解法:贪心
      • 3.2.1贪心思路
      • 3.2.2代码实现

3.摆动序列

3.1题目

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。 第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。

  • 例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。
  • 相反,[1, 4, 7, 2, 5][1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。

子序列 可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。

给你一个整数数组 nums ,返回 nums 中作为 摆动序列最长子序列的长度

  • 示例一:
输入:nums = [1,7,4,9,2,5]
输出:6
解释:整个序列均为摆动序列,各元素之间的差值为 (6, -3, 5, -7, 3) 。
  • 示例二:
输入:nums = [1,17,5,10,13,15,10,5,16,8]
输出:7
解释:这个序列包含几个长度为 7 摆动序列。
其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8) 。
  • 示例三:
输入:nums = [1,2,3,4,5,6,7,8,9]
输出:2

3.2解法:贪心

3.2.1贪心思路

image-20240424155308932

3.2.2代码实现

	public int wiggleMaxLength(int[] nums) {
        int prediff=0;  //上一个元素的差值
        int curdiff=0;  //下一个元素与该元素的差值
        int res=1;      //初始为1,默认右边为峰值
        for(int i=0;i<nums.length-1;i++){
            //判断是否出现峰值
            curdiff=nums[i+1]-nums[i];
            if((prediff>=0 && curdiff<0 )|| (prediff<=0 && curdiff>0)){
                //该元素为谷顶或谷底
                res++;
                //只有该元素为谷顶或谷底,才更新prediff(避免单调坡中有平坡)
                prediff=curdiff;
            }
        }
        return res;
    }

在这里插入图片描述

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

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

相关文章

python爬虫 - 爬取html中的script数据(zum.com新闻信息 )

文章目录 1. 分析页面内容数据格式2. 使用re.findall方法&#xff0c;编写爬虫代码3. 使用re.search 方法&#xff0c;编写爬虫代码 1. 分析页面内容数据格式 &#xff08;1&#xff09;打开 https://zum.com/ &#xff08;2&#xff09;按F12&#xff08;或 在网页上右键 --…

书生·浦语大模型第二期实战营第四节-XTuner 微调 LLM:1.8B、多模态、Agent 作业-XTuner 微调个人小助手认知

视频教程&#xff1a;XTuner 微调 LLM:1.8B、多模态、Agent 文字教程&#xff1a;XTuner 微调 LLM:1.8B、多模态、Agent 作业来源&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/xtuner/homework.md XTuner 微调个人小助手认知 1. 环境安装 2.准备工作 2.1…

(done) 什么是 SVD 奇异值分解?什么是 TruncatedSVD 截断奇异值分解?

来源&#xff1a;https://www.bilibili.com/video/BV16A411T7zX/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 奇异值分解其实就是如下图&#xff0c;把矩阵 M 分解成一个正交方阵 U&#xff0c;乘以一个不规则奇异值矩阵 sigma…

校企联合,共谋发展 | 欢迎陕西科技大学一行来访Aigtek安泰电子交流洽谈!

为进一步深化校企合作共建&#xff0c;促进优秀人才引进。4月12日&#xff0c;陕西科技大学电智学院的院长马院长、副院长任院长、电子信息工程专业副主任张攀峰老师、郭拓老师&#xff0c;到访西安安泰电子科技有限公司&#xff0c;就开展校企合作展开了学习交流&#xff0c;安…

【认真白嫖】注册免费域名

一、eu.org官网 https://nic.eu.org/&#xff0c;始于1996年&#xff0c;对个人和组织是免费注册&#xff0c;页面还真有96年的风格&#xff0c;点进去注册就行。 二、注册 使用随机生成一个虚拟英国或者美国地址的网站&#xff0c;会提高通过的概率。 https://www.haoweic…

打造基于时间-技能-动能的人效飞轮,助推新质生产力发展

△ 章新波&#xff0c;盖雅工场董事长兼CEO 本文内容来自于2024年4月19日&#xff0c;章新波在第四届狮山人力资源论坛《以人为本&#xff0c;赋能发展&#xff1a;打造基于时间-技能-动能三要素的人效飞轮》的主题演讲。 1. 技术变革的影响&#xff1a;替代效应与补偿效应并存…

IPv6是什么

IPv6服务器是基于IPv6协议进行网络通信的服务器。IPv6&#xff0c;即“互联网协议第6版”&#xff0c;是互联网工程任务组&#xff08;IETF&#xff09;设计的用于替代IPv4的下一代IP协议&#xff0c;其地址数量号称可以为全世界的每一粒沙子编址。IPv6的主要功能和应用场景包括…

高效的数据采集如何促进企业发展?

大数据开启了一个大规模生产、分享和应用数据的时代&#xff0c;它给技术和商业带来了巨大的变化。麦肯锡研究表明&#xff0c;在医疗、零售和制造业领域&#xff0c;大数据每年可以提高劳动生产率0.5-1个百分点。大数据在核心领域的渗透速度有目共睹&#xff0c;然而调查显示&…

UTC和北京时间

influxdb 的时间为UTC和北京时间相差8小时&#xff0c;需要经常转化&#xff0c;所以有下面的2个常用时间 public static void main(String[] args) {//北京时间当天0点ZonedDateTime dateTime ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));ZonedDateTime beijin…

【ARMv9 DSU-120 系列 4.1 -- Utility bus 详细介绍 2】

文章目录 ARM DSU-120DSU-120 Utiity BusCluster and core PPUPPU寄存器的访问性PPU寄存器的作用系统组件基地址ARM DSU-120 DSU-120 Utiity Bus 在ARMv9架构中,DSU-120(Dynamic Shared Unit 120)是一个关键组件,用于管理核心和系统组件之间的通信与协作。某些系统组件寄存…

C语言-联合体基本概念

联合体的外在形式跟结构体非常类似&#xff0c;但它们有一个本质的区别&#xff1a;结构体中的各个成员是各自独立的&#xff0c;而联合体中的各个成员却共用同一块内存&#xff0c;因此联合体也称为共用体。 联合体内部成员的这种特殊的“堆叠”效果&#xff0c;使得联合体有如…

说说你对归并排序的理解?如何实现?应用场景?

一、是什么 归并排序&#xff08;Merge Sort&#xff09;是建立归并操作上的一种有效&#xff0c;稳定的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用 将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff0c;即先使每个子序列有序&#xff0c;再使…

C++项目在Linux下编译动态库

一、说明 最近在Windows下开发了一个C线程池项目&#xff0c;准备移植到Linux下&#xff0c;并且编译成动态库进行使用。现将具体过程在此记录。 二、准备 1、项目文件 我的项目文件如下&#xff0c;其中除main.cpp是测试文件之外&#xff0c;其他都是线程池项目相关的 将C…

为什么光电测径仪质量更稳定可靠?

光电测径仪与激光扫描式测径仪都是目前常用的外径自动化测量设备&#xff0c;他们能实现的功能相同&#xff0c;但为什么说光电测径仪更稳定可靠&#xff0c;下面一起来看一下。 光电测径仪测量原理 测头部件是测径仪的核心部件&#xff0c;它的作用是将被测物在CCD芯片上清晰…

基于SpringBoot的合家云社区物业管理平台 - 权限管理模块开发

合家云社区物业管理平台 4.权限管理模块开发 4.1 权限管理概述 4.1.1 权限管理的意义 后台管理系统中&#xff0c;通常需要控制不同的登录用户可以操作的内容。权限管理用于管理系统资源&#xff0c;分配用户菜单、资源权限&#xff0c;以及验证用户是否有访问资源权限。 …

【软件测试】采用等价类划分法设计测试用例

例题1 请采用等价类划分法设计测试用例。 考虑软件 app, 它有两个输入变量 , 分别是 name 和 age, 其中 ,name 是至多包含 20 个字母字符的非空字符串 ,age 是整数型变量 ,0 ≤ age ≤ 120 。当输入给 name 的字符串的长度超过 20时 ,name 取前 20 个字符作为 name 的值 ; 如果…

Hotcoin Academy 市场洞察-2024年4月15日-21日

加密货币市场表现 BTC ETF在本周出现净流出&#xff0c;大盘有较大跌幅&#xff0c;BTC一度跌破60000美金&#xff0c;ETH一度跌破2800美金&#xff0c;整体以横盘为主&#xff0c;行情在周末有略微回升趋势。BTC市占率创21年4月来新高&#xff0c;目前市值1.28万亿&#xff0c…

导出瑞芯微(Rockchip)芯片的设备树(Device Tree)

要导出瑞芯微&#xff08;Rockchip&#xff09;芯片的设备树&#xff08;Device Tree&#xff09;&#xff0c;可以使用设备树编译器&#xff08;DTC&#xff0c;Device Tree Compiler&#xff09;。通常&#xff0c;会有一个设备树的源文件&#xff08;.dts&#xff09;&#…

网络编程-libuv介绍

官网 https://libuv.org/ 概要 libuv是一个强大的跨平台异步I/O库&#xff0c;主要用于构建高性能、可扩展的网络应用程序。它最初是为Node.js开发的&#xff0c;用于处理Node.js的异步I/O操作&#xff0c;但随着时间的推移&#xff0c;它也被广泛应用于其他系统&#xff0…

#1 Numpy Pandas

Numpy & Pandas 2.1 numpy属性2.2 numpy的创建array2.3 numpy的基础运算 调入头文件 import numpy as np2.1 numpy属性 #生成一个array数组 array np.array([[1, 2, 3],[2, 3, 4]])#也可以这样 dtype表示array的元素类型 np.array([1, 2, 3], dtype np.int64) #array维…