LeetCode 2760. 最长奇偶子数组:模拟(使用一个变量记录状态)

【LetMeFly】2760.最长奇偶子数组:模拟(使用一个变量记录状态)

力扣题目链接:https://leetcode.cn/problems/longest-even-odd-subarray-with-threshold/

给你一个下标从 0 开始的整数数组 nums 和一个整数 threshold

请你从 nums 的子数组中找出以下标 l 开头、下标 r 结尾 (0 <= l <= r < nums.length) 且满足以下条件的 最长子数组

  • nums[l] % 2 == 0
  • 对于范围 [l, r - 1] 内的所有下标 inums[i] % 2 != nums[i + 1] % 2
  • 对于范围 [l, r] 内的所有下标 inums[i] <= threshold

以整数形式返回满足题目要求的最长子数组的长度。

注意:子数组 是数组中的一个连续非空元素序列。

 

示例 1:

输入:nums = [3,2,5,4], threshold = 5
输出:3
解释:在这个示例中,我们选择从 l = 1 开始、到 r = 3 结束的子数组 => [2,5,4] ,满足上述条件。
因此,答案就是这个子数组的长度 3 。可以证明 3 是满足题目要求的最大长度。

示例 2:

输入:nums = [1,2], threshold = 2
输出:1
解释:
在这个示例中,我们选择从 l = 1 开始、到 r = 1 结束的子数组 => [2] 。
该子数组满足上述全部条件。可以证明 1 是满足题目要求的最大长度。

示例 3:

输入:nums = [2,3,4,5], threshold = 4
输出:3
解释:
在这个示例中,我们选择从 l = 0 开始、到 r = 2 结束的子数组 => [2,3,4] 。 
该子数组满足上述全部条件。
因此,答案就是这个子数组的长度 3 。可以证明 3 是满足题目要求的最大长度。

 

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100
  • 1 <= threshold <= 100

方法一:模拟(使用一个变量记录状态)

使用变量 n o w C n t nowCnt nowCnt来记录当前“奇偶子数组”的长度。

  • 如果 n o w C n t ≠ 0 nowCnt \neq 0 nowCnt=0,说明当前元素前面是“奇偶子数组”,因此看当前元素能否加入到子数组中。
    • 如果当前元素 ≤ t h r e s h o l d \le threshold threshold并且当前元素奇偶性和上一个元素不同,则 n o w C n t + + nowCnt++ nowCnt++
    • 否则,更新答案 a n s ans ans最大值,并将 n o w C n t nowCnt nowCnt归零
  • 否则( n o w C n t nowCnt nowCnt为零),则看当前元素能否成为“奇偶子数组”的开始(为偶、不大于 t h r e s h o l d threshold threshold

注意对 n o w C n t ≠ 0 nowCnt \neq 0 nowCnt=0的判断要在 n o w C n t = 0 nowCnt=0 nowCnt=0的判断之前,因为偶数元素可能无法添加到数组末尾但是可以作为数组的开头。

  • 时间复杂度 O ( l e n ( n u m s ) ) O(len(nums)) O(len(nums))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
class Solution {
public:int longestAlternatingSubarray(vector<int>& nums, int threshold) {int ans = 0;int nowCnt = 0;for (int i = 0; i < nums.size(); i++) {if (nowCnt) {if (nums[i] <= threshold && nums[i] % 2 != nums[i - 1] % 2) {nowCnt++;}else {ans = max(ans, nowCnt);nowCnt = 0;}}if (!nowCnt && nums[i] <= threshold && nums[i] % 2 == 0) {nowCnt = 1;}}return max(ans, nowCnt);}
};
Python
# from typing import Listclass Solution:def longestAlternatingSubarray(self, nums: List[int], threshold: int) -> int:ans = 0nowCnt = 0for i in range(len(nums)):if nowCnt:if nums[i] <= threshold and nums[i] % 2 != nums[i - 1] % 2:nowCnt += 1else:ans = max(ans, nowCnt)nowCnt = 0if not nowCnt:if nums[i] <= threshold and nums[i] % 2 == 0:nowCnt = 1return max(ans, nowCnt)

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/134449952

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

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

相关文章

微信小程序中复制文本

在微信小程序中&#xff0c;可以使用wx.setClipboardData()方法来实现复制文本内容的功能。以下是一个示例代码&#xff1a; // 点击按钮触发复制事件 copyText: function() {var that this;wx.setClipboardData({data: 要复制的文本内容,success: function(res) {wx.showToa…

Tosca 2023x 新功能介绍

Tosca/Structure的功能增强 热优化功能增强 在优化过程中&#xff0c;支持将对流边界条件转移至新创建的表面&#xff0c;方便更加真实地模拟传热行为。支持恒定传导。多物理场优化能力增强。通过使用多个输入面板对热和结构荷载进行分别输入&#xff0c;以支持同时对热和结构…

多表之间存在父子级关系:根据某一级,查询所有子级 构建树结构数据

表park_project、park_project_sub 、building 、building_floor 、building_floor_room 存在父子级关系&#xff0c;并且确定是4层。 多表之间存在父子级关系&#xff0c;根据某一级&#xff0c;查询所有子级 现需要根据某一级&#xff0c;查询这一级下的所有子级&#xff0…

​软考-高级-系统架构设计师教程(清华第2版)【第10章 软件架构的演化和维护(P345~382)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第10章 软件架构的演化和维护&#xff08;P345~382&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

Matlab 方位角计算之二

文章目录 一、简介二、实现代码三、实现效果一、简介 我们总是说降维打击,这种思路尤其在一些问题上显现的尤为突出,就比如方位角这个问题,如果我们局限于二维这个空间,那么很多时候就需要判断方向向量落在了那个象限,之后再一个个情况逐一分析,虽然这样做并不复杂,但总…

【k8s集群搭建(二):基于虚拟机的linux的k8s集群搭建_超详细_可视化界面Dashboard安装_记录全过程踩坑记录及解决方法】

在 master 执行 # 根据 在线配置文件 创建资源 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml设置访问端口 # 修改配置文件 找到 type&#xff0c;将 ClusterIP 改成 NodePort kubectl edit svc kubernetes-…

Scala---迭代器模式+Trait特质特性

Scala迭代器模式处理数据 scala中创建集合需要内存&#xff0c;集合与集合之间的转换时&#xff0c;每次转换生成新的集合时&#xff0c;新的集合也需要内存。如果有一个非常大的初始集合&#xff0c;需要经过多次转换&#xff0c;每次转换都生成一个新的集合&#xff0c;才能…

sqlite3简单使用

为什么要使用sqlite3? sqlite3轻量简介&#xff0c;无需单独的数据库服务&#xff0c;只需访问磁盘上的.db的文件。在某些情况下很有用。 下面是一些简单的使用代码&#xff1a; import sqlite3 from uuid import uuid1# 连接数据库文件&#xff0c;如果不存在会创建 with…

2023年中国冲击波治疗仪市场发展趋势分析:未来市场增长空间更大[图]

冲击波在临床医学领域最早应用于体外冲击波碎石&#xff0c;在二十世纪八十年代末期&#xff0c;体外冲击波碎石技术开始被运用到骨科及康复理疗领域&#xff0c;经过十余年的临床研究&#xff0c;冲击波疗法日益完善&#xff0c;应用范围也日益扩大。冲击波作为一种介于保守疗…

【入门篇】1.7 Redis 之 codis 入门介绍

文章目录 1. 简介2. Codis的安装与配置下载编译源码安装1. 安装 Go 运行环境2. 设置编译环境3. 下载 Codis 源代码4. 编译 Codis 源代码 Docker 部署 3. Codis的架构Codis的架构图和组件Codis的工作流程 4. Codis的核心特性自动数据分片数据迁移高可用性全面支持Redis命令分布式…

Android中eBPF使用原理以及 kprobe dmabuf_setup实例

目录 eBPF in Android Android eBPF kprobe dma代码 定义一个MAP 定义一个 PROG bpfprogs/Android.bp 测试程序 bpfprogs/memstats/Android.bp bpfprogs/memstats/MemStats.h bpfprogs/memstats/MemStats.cpp bpfprogs/memstats/MemStatsMain.cpp 编译运行 结果分析…

android 13.0 删除连接wifi的配置信息

1.前言 在13.0的系统rom产品定制化开发中,对于wifi的功能定制需求功能也是挺多的,目前对于wifi模块有这么个需求,要求在 提供接口实现删除已连接wifi的需求,所以需要了解wifi相关的配置情况,然后移除wifi即可,接下来就来实现相关的功能 2.删除连接wifi的配置信息的核心类…

C 语言 sizeof运算符

C 语言 sizeof运算符 sizeof运算符在C语言中使用时&#xff0c;它决定表达式的大小或在char大小的存储单元数量中指定的数据类型。sizeof运算符包含一个操作数&#xff0c;该操作数可以是表达式&#xff0c;也可以是数据类型转换&#xff0c;其中转换是用括号括起来的数据类型…

【fbtft】如何添加fbtft驱动

获取lcd ic的datasheet&#xff0c;或者直接找到其他平台&#xff08;linux&#xff0c;stm32&#xff0c;esp32&#xff09;的驱动 我用的是合宙的esp32驱动&#xff0c;注意是c语言的&#xff0c;合宙上层用lua封装了&#xff0c;需要找到sdk源码。 源码路径&#xff1a; …

File类和IO流

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

设置chunk自动扩展到多大

1. 设置chunk自动扩展 execute function task(modify chunk extendable on,8); 2. 设置dbs扩展到多大合适 execute function task(modify space sp sizes,testdb1024,1024,10240) testdb 初始1MB 下次扩1MB 最大10MB

appium+python自动化测试

获取APP的包名 1、aapt即Android Asset Packaging Tool&#xff0c;在SDK的build-tools目录下。该工具可以查看apk包名和launcherActivity 2、在android-sdk里面双击SDK-manager,下载buidl-tools 3、勾选build-tools&#xff0c;随便选一个版本&#xff0c;我这里选的是24的版…

宏集干货 | 手把手教你通过CODESYS V3进行PLC编程(三)

来源&#xff1a;宏集科技 工业物联网 宏集干货 | 手把手教你通过CODESYS V3进行PLC编程&#xff08;三&#xff09; 教程背景 通过之前的教程&#xff0c;我们已经为大家演示了宏集MC-Prime控制器的连接、试运行和CODESYS的安装&#xff0c;并创建了一个计数器项目。在本期教…

数据分析 - 分散性与变异的量度

全距 - 极差 处理变异性 方差度量 数值与均值的距离&#xff0c;也就是数据的差异性 标准差描述&#xff1a;典型值 和 均值的距离的方法&#xff0c;数据与均值的分散情况

出行类app如何提升广告变现收益?

出行类APP已经成为越来越多人们出行的首选&#xff0c;出行类app在变现方式上存在以下痛点&#xff1a;APP功能单一、使用场景单一&#xff1b;用户使用时间集中&#xff0c;粘性低...这些痛点使得开发者获取收益的提升面临极大的挑战。 https://www.shenshiads.com 如何让出…