当前位置: 首页 > wzjs >正文

广东网站建设十大品牌图片设计制作

广东网站建设十大品牌,图片设计制作,wordpress怎么转换为静态链接,制作公司网页什么价位🔥 找出最长交替子数组:奇偶交替且偶数开头的子数组问题 🎯 题目描述 给定一个整数数组 nums 和一个整数 threshold,找出满足以下条件的最长子数组: 偶数开头:子数组的第一个元素是偶数(nums…

🔥 找出最长交替子数组:奇偶交替且偶数开头的子数组问题

🎯 题目描述

给定一个整数数组 nums 和一个整数 threshold,找出满足以下条件的最长子数组

  1. 偶数开头:子数组的第一个元素是偶数(nums[l] % 2 == 0)。
  2. 奇偶交替:相邻元素奇偶性不同(nums[i] % 2 != nums[i+1] % 2)。
  3. 元素不超限:所有元素 ≤ threshold

返回子数组的长度,若不存在符合条件的子数组,返回 0。

🌰 典型示例

输入数组输出解释
[3, 2, 5, 4], 53子数组 [2, 5, 4] 满足所有条件
[1, 2], 21子数组 [2] 满足条件
[2, 3, 4, 5], 43子数组 [2, 3, 4] 满足条件

🧠 思路分析

✨ 核心观察

  1. 偶数起点:子数组必须以偶数开头,因此遍历数组时,仅当遇到偶数且 ≤ threshold 时,才尝试扩展子数组。
  2. 奇偶交替:每次扩展子数组时,检查当前元素与前一个元素的奇偶性是否不同。
  3. 阈值过滤:任何元素超过 threshold 时,立即终止当前子数组的扩展。

🚀 算法策略

  • 双指针法:使用 start 标记子数组起点,i 作为遍历指针。
  • 单次遍历:外层循环遍历所有可能的起点,内层循环扩展子数组直到不满足条件。
  • 状态维护:仅需记录当前子数组的长度和奇偶性状态,空间复杂度为 O(1)

💻 代码实现(Java)

基础版(暴力枚举)

class Solution {public int longestAlternatingSubarray(int[] nums, int threshold) {int maxLength = 0;int n = nums.length;for (int start = 0; start < n; start++) {// 检查起点:偶数且 ≤ thresholdif (nums[start] % 2 != 0 || nums[start] > threshold) {continue;}int currentLength = 1; // 起点本身长度为 1for (int i = start + 1; i < n; i++) {// 检查当前元素:奇偶交替且 ≤ thresholdif (nums[i] % 2 != nums[i-1] % 2 && nums[i] <= threshold) {currentLength++;} else {break; // 不满足条件,终止扩展}}maxLength = Math.max(maxLength, currentLength); // 更新最长长度}return maxLength;}
}

优化版(双指针法)

class Solution {public int longestAlternatingSubarray(int[] nums, int threshold) {int maxLength = 0;int start = 0, i = 0; // 双指针:start 记录起点,i 遍历数组while (i < nums.length) {start = i; // 尝试以 i 为起点i++;// 起点必须是偶数且 ≤ thresholdif (nums[start] % 2 != 0 || nums[start] > threshold) {continue;}// 扩展子数组直到不满足条件while (i < nums.length && nums[i] % 2 != nums[i-1] % 2 && nums[i] <= threshold) {i++;}// 更新最长长度(i - start 为当前子数组长度)maxLength = Math.max(maxLength, i - start);}return maxLength;}
}

📊 复杂度分析

算法时间复杂度空间复杂度
基础版O(n²)O(1)
双指针优化版O(n)O(1)

✨ 优化点

  • 双指针优化:通过单次遍历(每个元素最多访问 2 次),将时间复杂度从 O (n²) 优化到 O (n)。
  • 状态压缩:无需记录中间状态,仅用指针和长度变量即可完成计算。

📝 关键步骤解析

  1. 起点检查

    • 仅当元素是偶数且 ≤ threshold 时,作为子数组起点(nums[start] % 2 == 0 && nums[start] ≤ threshold)。
  2. 扩展子数组

    • 从起点开始,逐个检查后续元素:
      • 奇偶交替(nums[i] % 2 != nums[i-1] % 2)。
      • 元素 ≤ thresholdnums[i] ≤ threshold)。
    • 满足条件则延长子数组,否则终止扩展。
  3. 更新结果

    • 每次扩展结束后,计算当前子数组长度(i - start),并更新最长长度。

🧪 示例解析(以优化版代码为例)

示例 1:nums = [3, 2, 5, 4]threshold = 5

  1. 起点 start=1(元素 2,偶数且 ≤5)
    • 扩展子数组:
      • i=2(5,奇,与前偶不同,≤5 → 长度 2)。
      • i=3(4,偶,与前奇不同,≤5 → 长度 3)。
    • 最长长度更新为 3

示例 2:nums = [1, 2]threshold = 2

  1. 起点 start=1(元素 2,偶数且 ≤2)
    • 无后续元素,长度 1

示例 3:nums = [2, 3, 4, 5]threshold = 4

  1. 起点 start=0(元素 2,偶数且 ≤4)
    • 扩展子数组:
      • i=1(3,奇,与前偶不同,≤4 → 长度 2)。
      • i=2(4,偶,与前奇不同,≤4 → 长度 3)。
      • i=3(5,>4 → 终止)。
    • 最长长度 3

❗ 边界条件处理

  1. 全奇数数组:无符合条件的子数组,返回 0
  2. 元素超过阈值:遇到超过阈值的元素,立即终止当前子数组扩展。
  3. 单个元素:若元素是偶数且 ≤阈值,长度为 1

🌟 总结

✨ 核心条件

  • 偶数开头 + 奇偶交替 + 元素不超限

🚀 最优解法

  • 双指针遍历:单次扫描完成,时间复杂度 O (n)。
  • 关键技巧:利用指针标记起点,动态扩展子数组,避免重复计算。

💡 同类问题扩展

  • 允许奇数开头:修改起点条件为奇数。
  • 奇偶连续(非交替):检查相邻元素奇偶性相同。

📚 参考资料

  • LeetCode 原题:最长交替子数组
  • 算法思想:双指针法、贪心策略。

🎨 可视化流程图(双指针移动过程)

初始化:start=0, i=0, maxLength=0  
↓  
遍历数组:  if 起点合法(偶数且 ≤ threshold):  扩展子数组直到不满足条件(奇偶交替且 ≤ threshold)  更新 maxLength(i - start)  
↓  
返回 maxLength  

✨ 博客排版建议

  1. 标题分层:使用 ###### 区分章节(如**🔥 标题**、🎯 题目描述)。
  2. 代码高亮:使用 Java 代码块,标注关键注释(如起点检查、扩展条件)。
  3. 表格对比:用表格展示基础版与优化版的复杂度差异。
  4. 互动问题:在结尾提问:“如何处理包含负数的数组?(提示:奇偶性判断与负数无关)”。

通过以上结构,博客兼顾可读性技术性,适合算法学习者理解双指针法的应用。可补充双指针移动动画示例执行流程图,进一步提升内容的直观性。


文章转载自:

http://pO6gRzeP.qkrzn.cn
http://3Iw7v6EF.qkrzn.cn
http://b1LNeRDh.qkrzn.cn
http://usfHfRMt.qkrzn.cn
http://z8Tw6Gjl.qkrzn.cn
http://SgWpVzWJ.qkrzn.cn
http://Uh6sqKLn.qkrzn.cn
http://dNtoAMa9.qkrzn.cn
http://2uPEVp7H.qkrzn.cn
http://VMKMSrZH.qkrzn.cn
http://s9YWYCfy.qkrzn.cn
http://IFIzv8uK.qkrzn.cn
http://HUuyronT.qkrzn.cn
http://ujX8jvbt.qkrzn.cn
http://hpJVOY0d.qkrzn.cn
http://qyo9CGFW.qkrzn.cn
http://GHKt7G4W.qkrzn.cn
http://bxkQbPwa.qkrzn.cn
http://kgR52CQk.qkrzn.cn
http://UXB0x7K1.qkrzn.cn
http://EbJGuvTZ.qkrzn.cn
http://Dm3bU9Rn.qkrzn.cn
http://v4EILnFi.qkrzn.cn
http://24HByFBE.qkrzn.cn
http://DLWEksDa.qkrzn.cn
http://i5P874Xq.qkrzn.cn
http://G2tYqxFJ.qkrzn.cn
http://cbvO5idI.qkrzn.cn
http://6glyvpnv.qkrzn.cn
http://mRNbAJ6i.qkrzn.cn
http://www.dtcms.com/wzjs/673483.html

相关文章:

  • 制作一个网站流程id导入不了wordpress
  • 找人设计网页多少钱seo教学免费课程霸屏
  • 做理财的网站好co域名
  • 保定网站建设公司大全设计网站建站
  • 网站制作的公司永泰县网站集约化建设
  • 网站思维导图例子广东短视频推广公司
  • 创新建设资金网站国内小众电商平台有哪些
  • 济南网站设计哪家好做网站费用分几块
  • 三联网站建设价格网站被k的迹象
  • 栾城网站制作青岛logo设计
  • 网上买吃的网站做代理国内购物平台排行榜
  • 国土局网站建设制度免费cmsasp
  • 网站建设与管理和电子商务哪个好python做网站原理
  • 西宁做网站是什么dedecms手机版
  • 云服务器建设简易网站帝国cms企业网站
  • 装修设计素材网seo怎么去做
  • ppt做视频的模板下载网站有哪些内容河北招投标信息网官网
  • 在线捏脸网站需要多少钱重庆建筑工程造价信息网
  • 网站网页能自己做吗呼和浩特建设厅官方网站
  • 建设网站设计专业服务wordpress轮翻图参数
  • 排名sem优化软件泉州网站优化排名
  • 如何制作网站视频教程西安计算机培训机构排名前十
  • 深圳微商城网站设计公司做网站有的浏览器
  • 无法进行网站备案企业网站建设规划 论文
  • 郑州快速网站优化公司哪家好上海市建设工程 安全质量网站
  • 空包网站建设属于哪类怎么做集团网站
  • 求做外宣图网站wordpress取消更改
  • 做网站做本地服务器吗环境没有tomcat怎么演示自己做的网站
  • 网站流量图片生成哪有做网站
  • 想让网站的文章都被收录怎么做转入已备案网站