978. 最长湍流子数组(动态规划)

《矩阵论》学习笔记(四):4.2 矩阵的QR分解 《矩阵论》学习笔记(四):4.2 矩阵的QR分解 文章目录《矩阵论》学习笔记(四):4.2 矩阵的QR分解一. Givens矩阵与Givens变换1.1. 概念与理解1.2. Givens矩阵求解方法二. Householder矩阵与Householder变换2.1. 概念与理解2.2. Householder矩阵求解方法2.3. Givens变换与Householder变换的关系三. 矩阵的QR... 阅读详情
/**
 * 978. 最长湍流子数组
 * @author wsq
 * @date 2020/10/20
	当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时,我们称其为湍流子数组:
	若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];
	或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。
	也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。
	返回 A 的最大湍流子数组的长度。
	
	示例 1:
	输入:[9,4,2,10,7,8,8,1,9]
	输出:5
	解释:(A[1] > A[2] < A[3] > A[4] < A[5])

	示例 2:
	输入:[4,8,12,16]
	输出:2
	
	链接:https://leetcode-cn.com/problems/longest-turbulent-subarray
 */
package com.wsq.dp;

public class MaxTurbulenceSize {
	/**
	 *	动态规划
	 *	1.确定状态
	 *		f[i]表达以i结尾的最长湍流子数组的长度
	 *		最后一步:如果位置i与i-1的大小与位置i-2与i-1的大小关系一致时,f[i]可以看做在f[i-1]后追加一个元素
	 *			   否则,i只能与i-1或者自身组成一个子数组
	 *		子问题:计算f[i-1]的最长湍流子数组的长度
	 *	2.定义转移方程
	 *		f[i] = f[i-1] + 1 or 2 or 1
	 *	3.初始条件
	 *		f[0] = 1
	 *	4.计算顺序:
	 *		由于后续状态依赖之前的状态,所以从小到大计算
	 * @param A
	 * @return
	 */
	public int maxTurbulenceSize(int[] A) {
        int n = A.length;
        if(n == 1){
            return 1;
        }
        int[] f = new int[n];
        f[0] = 1;
        if(A[1] != A[0]){
            f[1] = 2;
        }else{
            f[1] = 1;
        }
        int max = f[1];
        for(int i = 2; i < n; i++){
            if((A[i] > A[i-1] && A[i-2] > A[i-1]) || (A[i] < A[i-1] && A[i-2] < A[i-1])){
                f[i] = f[i-1] + 1;        
            }else if(A[i] != A[i-1]){
                f[i] = 2;
            }else{
                f[i] = 1;
            }

            if(f[i] > max){
                max = f[i];
            }
        }
        return max;
    }
}

活用QueryWrapper与@Select注解,构建MybatisPlus动态多表查询方案 本文深入探讨了如何结合MybatisPlus的QueryWrapper与@Select注解,构建高效灵活的动态多表关联查询方案。通过解析${ew.customSqlSegment}占位符机制,并设计通用的Service层封装,解决了复杂条件下多表查询的SQL拼接难题,显著提升了后台管理系统列表查询的开发效率与可维护性。 阅读详情

相关推荐

南京邮电大学电工电子实验(二)复习一

本文给电工电子实验(二)的复习进行一些知识点的提醒

YOUXISUN的博客 2962

leetcode 978. 最长湍流子数组(动态规划)

978. 最长湍流子数组 当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1]; 或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。 也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。

weixin_44560620的博客 323

数字IC后端PR阶段Innovus,ICC,ICC2修复short万能脚本分享

数字IC后端PR阶段Innovus,ICC,ICC2修复short万能脚本分享

weixin_37584728的博客 3465

Leetcode 978:最长湍流子数组(超详细的解法!!!)

当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时,我们称其为湍流子数组: 若 i &amp;amp;lt;= k &amp;amp;lt; j,当 k 为奇数时, A[k] &amp;amp;gt; A[k+1],且当 k 为偶数时,A[k] &amp;amp;lt; A[k+1]; 或 若 i &amp;amp;lt;= k &amp;amp;lt; j,当 k 为偶数时,A[k] &amp;amp;gt; A

coordinate的博客 1516

DMR对讲机的基本概念理解

刚刚入手DMR对讲机,尚未成功联通。国内互联网上能找到的资料很少,大多数也都是一些DMR协议介绍之类的玩意,对实际操作没有指导意义。以下全部是这几天在网上研究各种资料得出的个人思考,如有错误请斧正。 相比与模拟通讯系统,DMR将语音信号转换为包的形式进行收发。将DMR对比成TCP/IP系统会更容易理解。 一般DMR对讲机都支持模数双通,说明DMR应该使用了跟FM同样的无线AP组件,只在解码上有区别。对讲机先使用DMR进行数字解码,解码成功则说明是数字信号,不成功则使用模拟方式再次进行解码。可以对等理解为

1万+

硬件基础(4):(6)高精度ADC设计中模拟地与数字地的划分与连接

在实际 PCB 设计中,**接地与布线**对于获得干净的参考电压和高精度 ADC 测量至关重要。下面详细阐述**如何在硬件层面减少数字噪声耦合到模拟电路、保障参考电压的稳定性**。

FCZlll的博客 2648

978. Longest Turbulent Subarray——array

题目分析:不是用动态规划,python3没有了cmp函数 class Solution(object): def cmp(self, a, b): if a &gt; b: return 1 if a &lt; b: return -1 if a == b: re...

qq_32539187的博客 304

基于N32G003的PMBus从机协议栈设计与STM32F103模拟I2C主机通信实战

本文详细介绍了基于N32G003微控制器设计PMBus从机协议栈,并与STM32F103模拟I2C主机进行通信的实战方案。重点阐述了中断驱动架构、命令解析、CRC8优化及超时恢复机制,实现了在70kHz速率下稳定可靠的工业电源管理通信,适用于服务器电源、通信基站等成本敏感应用场景。

numpy6sculptor的博客 919

动态规划24:978. 最长湍流子数组

详解动态规划24:978. 最长湍流子数组(子数组问题)

2301_76197086的博客 398

XMind文件解析黑科技:用Python实现版本自适应读取(兼容2010-2024)

本文深入探讨了如何利用Python实现XMind文件的版本自适应解析,兼容从2010到2024年的各版本。通过分析XMind文件作为ZIP压缩包的本质,文章提供了智能探测文件内部结构(JSON或XML)并构建健壮读取逻辑的完整方案,有效解决了版本兼容性难题,并演示了将解析数据转换为PlantUML等下游应用的实战案例。

weixin_29041767的博客 684

【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

文章目录2.1 使用VBA进行桌面软件开发2.1.1 VBA开发方式2.1.1 VBA代码的安全性2.2 使用DLL进行桌面软件开发2.2.1 DLL开发方式2.2.2 DLL功能的应用部署2.3 使用Add-in进行桌面软件开发2.4 使用ArcGIS Engine构建独立应用程序 对于桌面GIS应用来说,ArcGIS平台不仅提供了用于开发独立运行的GIS应用软件的二次开发工包ArcGIS Engine,还提供了对ArcGIS Deskop桌面软件进行扩展的开发的话,在开发个具体的GIS 行业应用软件时

智慧空间实验室 6510

【算法练习】leetcode每日一题/动态规划 978. 最长湍流子数组+1186. 删除一次得到子数组最大和

978. 最长湍流子数组 难度中等108 当A的子数组A[i], A[i+1], ..., A[j]满足下列条件时,我们称其为湍流子数组: 若i <= k < j,当k为奇数时,A[k] > A[k+1],且当k为偶数时,A[k] < A[k+1]; 或若i <= k < j,当k为偶数时,A[k] > A[k+1],且当k为奇数时,A[k] < A[k+1]。 也就是说,如果比较符号在子数组中的每个相邻元素对之间翻...

一蓑烟雨任平生 277

扰动观察法MPPT控制器simulink仿真

最大功率点跟踪(MPPT)控制器对于光伏(PV)系统至关重要,因为它可以确保系统在所有操作条件下都能从光伏阵列中提取最大功率。扰动观察法(P&O)是一种广泛使用的MPPT算法,因为它简单且易于实现。本文介绍了P&O MPPT控制器的Simulink仿真,并分析了其性能。

qq_59747472的博客 318

leecode 978. 动态规划:最长湍流子数组

1.题目描述 当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i<=k<ji <= k < ji<=k<j,当 kkk 为奇数时, A[k]>A[k+1]A[k] > A[k+1]A[k]>A[k+1],且当 k 为偶数时,A[k]<A[k+1]A[k] < A[k+1]A[k]<A[k+1]; 或 若 i<=k<ji <= k < ji<=k&lt

eight_Jessen的博客 238

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

动态规划-子数组系列——978.最长湍流子数组

【代码】动态规划-子数组系列——978.最长湍流子数组。

2301_80689220的博客 368

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

978. 最长湍流子数组 动态规划

当 A的子数组A[i], A[i+1], ..., A[j]满足下列条件时,我们称其为湍流子数组: 若i <= k < j,当 k为奇数时,A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1]; 或 若i <= k < j,当 k 为偶数时,A[k] > A[k+1],且当 k为奇数时,A[k] < A[k+1]。 也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。 返回 A 的最大...

包磊磊的博客 330

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LeetCode978. 最长湍流子数组(动态规划)

1、题目描述 https://leetcode-cn.com/problems/longest-turbulent-subarray/ 当 A的子数组A[i], A[i+1], ..., A[j]满足下列条件时,我们称其为湍流子数组: 若i <= k < j,当 k为奇数时,A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1]; 或 若i <= k < j,当 k 为偶数时,A[k] > A[k+1],且当 k为奇数时,...

IOT_victor的博客 453

0动态规划中等 LeetCode978. 最长湍流子数组

978. 最长湍流子数组 描述 给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。 更正式地来说,当 arr 的子数组 A[i], A[i+1], …, A[j] 满足仅满足下列条件时,我们称其为湍流子数组: 若 i <= k < j : 当 k 为奇数时, A[k] > A[k+1],且 当 k 为偶数时,A[k] < A[k+1]; 或 若 i <= k < j : 当

31楼下小黑的博客 261

leetcode978_最长湍流子数组_滑动窗口或动态规划

1. 首先假设A[right]和A[right-1]之间的关系是大于小于等于分别为1,-1,0. 这样问题转化为最长的连续变换符号的1,-1,1,-1.......字符串长度有多长. 2. 然后我们可以用滑动窗口方法来做, 注意当条件不满足的时候再来计算,也就是先找到最长的可行解. 3. 依旧是套用滑动窗口模板. class Solution { public: int com...

qieyuan4083的博客 242

最长端流子数组--动态规划

leetcode 978 最长端流子数组 当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组: 若i <= k < j,当k为奇数时,A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1]; 或 若i <= k < j,当k为偶数时,A[k] > A[k+1] ,且当k为奇数时,A[k] < A[k+1]。 也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流

jump_into_zehe的博客 240

978. 最长湍流子数组(滑动窗口、动态规划)

一、题目描述 当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1]; 或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。 也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。 返回 A

qq_38748148的博客 209

Leetcode 978. 最长湍流子数组 (动态规划)

这道题目如果用双指针的思路,边界会比较多,比较麻烦,建议采用动态规划 定义f[i]表示以i结尾的最长摆动序列,在转移的时候,显然有两种情况,分别对应上升和下降,因此想到定义两个状态,然后交替转移,可以用滚动数组将空间优化到O(1) class Solution { public: int maxTurbulenceSize(vector<int>& arr) { // f[i] 表示以i结尾的上升的湍流数组 // g[i] 表示以i...

wwxy1995的博客 183

Leetcode-滑窗/动态规划-978. 最长湍流子数组

题目: 题解: 方法一:模拟题意,分为奇偶两种情况,计算最大湍流,并用滑窗模板解题: class Solution { public int maxTurbulenceSize(int[] arr) { int maxlen1 = sublen(arr,1); int maxlen2 = sublen(arr,0); return Math.max(maxlen1,maxlen2); } public int s

一只菜鸟夹 312

leetcode 978.最长湍流子数组

leetcode 978.最长湍流子数组 题干 当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1]; 或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。 也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则

玛软的垃圾桶 231

LeetCode——978. 最长湍流子数组(Longest Turbulent Subarray)——分析及代码(Java)

LeetCode——978. 最长湍流子数组[Longest Turbulent Subarray]——分析及代码[Java]一、题目二、分析及代码1. 动态规划(一维数组)(1)思路(2)代码(3)结果2. 动态规划(单个数字)(1)思路(2)代码(3)结果三、其他 一、题目 当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时,A[k] > A[k+1],且当 k 为偶数时,A[k] <

江南土豆的博客 252

❤️思维导图整理大厂面试高频数组16: 最长湍流子数组的动态规划构建 和 滑动窗口解法, 力扣978❤️

此专栏文章是对力扣上算法题目各种方法的总结和归纳, 整理出最重要的思路和知识重点并以思维导图形式呈现, 当然也会加上我对导图的详解. 目的是为了更方便快捷的记忆和回忆算法重点(不用每次都重复看题解), 毕竟算法不是做了一遍就能完全记住的. 所以本文适合已经知道解题思路和方法, 想进一步加强理解和记忆的朋友, 并不适合第一次接触此题的朋友(可以根据题号先去力扣看看官方题解, 然后再看本文内容). 关于本专栏所有题目的目录链接, 刷算法题目的顺序/注意点/技巧, 以及思维导图源文件问题请点击此链接. 想进大厂.

孤柒的博客 1万+
上一篇: 206. 反转链表
下一篇: 925. 长按键入(双指针)
Lazy mode
博客等级 码龄10年 13粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值