Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
最短无序子数组的 JavaScript 程序最短无序子数组的 JavaScript 程序_创想鸟

最短无序子数组的 JavaScript 程序最短无序子数组的 JavaScript 程序

最短无序子数组的 javascript 程序最短无序子数组的 javascript 程序

问题陈述要求在整数数组中找到最短的无序子数组。换句话说,我们需要确定元素不按升序或降序排序的最小子数组。这个问题可以通过多种方法来解决,但在本文中,我们将讨论使用 JavaScript 的简单而有效的解决方案。

因此,首先我们将首先定义什么是无序子数组,然后详细理解问题陈述,然后继续使用示例和代码片段解释逐步解决方案。读完本文后,您将清楚地了解如何在 JavaScript 中解决这个问题。那么让我们开始吧!

什么是无序子数组?

无序子数组是数组的连续子数组,其中元素不按升序或降序排列。换句话说,子数组中的元素不是按照递增或递减的顺序排列的。

例如:[1, 2, 3, 5, 4, 6, 7] 是一个无序子数组。

立即学习“Java免费学习笔记(深入)”;

问题陈述

给定一个整数数组,我们需要找到最短的无序子数组。换句话说,我们需要找出元素不按升序或降序排序的最小子数组。

例如,让我们考虑以下数组:const arr = [1, 2, 5, 4, 3, 6, 7]

在这种情况下,子数组 [5, 4, 3] 是最短的无序子数组。

现在让我们了解解决这个问题的算法,然后我们开始使用 JavaScript 实现这个算法。

最短无序子数组算法

输入 – n 个整数的数组

输出 – 无序的最短子数组的长度

序列猴子开放平台 序列猴子开放平台

具有长序列、多模态、单模型、大数据等特点的超大规模语言模型

序列猴子开放平台 0 查看详情 序列猴子开放平台

第 1 步 – 初始化开始 = 0,结束 = n-1

STEP 2 – 从左到右遍历数组并找到第一个大于其右邻居的元素。将其索引设置为开始。

STEP 3 – 从右向左遍历数组并找到第一个小于其左邻居的元素。将其索引设置为结束。

第 4 步 – 从开始到结束查找子数组中的最小和最大元素。

STEP 5 – 从 0 到 start-1 遍历数组,找到第一个大于步骤 4 中找到的最小元素的元素的索引。将其索引设置为左侧。

STEP 6 – 从 end+1 到 n-1 遍历数组,找到第一个小于步骤 4 中找到的最大元素的元素的索引。将其索引设置为右侧.

第 7 步 – 最短无序子数组的长度为(右 – 左 + 1)。

示例

在下面的示例中,我们首先通过分别从开头和结尾迭代数组来找到无序子数组的起始和结束索引。然后我们找到子数组中的最小和最大元素,然后分别从头和尾遍历数组来找到子数组的左索引和右索引。

最后,我们通过左索引减去右索引并加 1 来返回最短无序子数组的长度。

function shortestUnorderedSubarray(arr) {   let n = arr.length;   let start = 0, end = n - 1;   // find start index   for (let i = 0; i  arr[i + 1]) {         start = i;         break;      }   }   // find end index   for (let i = n - 1; i > 0; i--) {      if (arr[i] < arr[i - 1]) {         end = i;         break;      }   }   // find min and max element in subarray   let min = arr[start], max = arr[start];   for (let i = start + 1; i <= end; i++) {      if (arr[i]  max) {         max = arr[i];      }   }   // find left index   let left = 0;   for (let i = 0; i  min) {         left = i;         break;      }   }   // find right index   let right = n - 1;   for (let i = n - 1; i >= end; i--) {      if (arr[i] < max) {         right = i;         break;      }   }   // return length of shortest un-ordered subarray   return right - left + 1;}// Example usage:const arr = [1, 2, 5, 4, 3, 6, 7]console.log("Array:", JSON.stringify(arr))const len = shortestUnorderedSubarray(arr)console.log("The length shortest un-ordered subarray: ", len);// Output: 3, as [5, 4, 3] is the shortest un-ordered subarray with length 3.

结论

我们讨论了如何使用 JavaScript 执行最短无序子数组问题的每一个细微差别。我们希望通过本文,人们可以轻松找到并修复代码中与无序子数组相关的问题。

以上就是最短无序子数组的 JavaScript 程序最短无序子数组的 JavaScript 程序的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/534805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
大白菜u盘启动盘写入基础包失败
上一篇 2025年11月9日 12:20:45
Composer的COMPOSER_AUTH环境变量如何配置和使用?
下一篇 2025年11月9日 12:20:48

相关推荐

  • 优酷怎么退出登录?-优酷退出登录的方法

    优酷视频作为当下广受欢迎的视频平台之一,许多用户在使用过程中会关心如何退出账号。那么,优酷如何退出登录?以下是详细的操作步骤,一起来看看吧! 优酷退出登录的具体方法 1、打开手机上的优酷应用,进入主界面后,点击底部菜单中的【我的】选项。 2、进入个人页面后,向下滑动屏幕,直到看到底部的【设置】入口,…

    2026年9月21日
    200
  • 余承东:三折叠能超越华为的只有华为

    9月4日,华为举行新品发布会,正式推出全球第二款商用三折叠手机——华为Mate XTs非凡大师。 继去年首发全球首款商用三折叠手机后,华为目前依然是行业内唯一实现三折叠手机量产并完成产品迭代的品牌。 华为常务董事、终端BG董事长余承东在会上强调:“三折叠能超越华为的只有华为。” 他表示,新机通过采用…

    2026年9月21日
    100
  • Java Random类如何生成随机数

    Random类位于java.util包,通过实例化生成伪随机数;无参构造以系统时间作种子,带参构造用固定种子可复现序列;提供nextInt()、nextDouble()等方法生成不同类型随机值;指定范围整数可用rand.nextInt(max-min)+min实现;多线程推荐ThreadLocalR…

    2026年9月21日
    100
  • VSCode怎么改环境_VSCode切换Python/Node等多版本环境教程

    切换VSCode环境需先安装对应语言扩展,再通过命令面板选择解释器或使用nvm切换Node版本,配合虚拟环境或launch.json配置确保运行和调试时使用正确版本,可通过终端命令验证环境,若失效可检查缓存、扩展冲突或权限问题。 VSCode改环境,其实就是让VSCode知道你想用哪个版本的Pyth…

    2026年9月21日
    000
  • OPPO A6 Pro官宣:开启手机六年耐用新时代

    9月4日,OPPO正式宣布将于9月9日下午14:30推出全新机型OPPO A6 Pro,标志着手机六年持久耐用新纪元的开启。 据官方预热内容显示,OPPO A6 Pro在防水、抗摔及整体耐久性方面实现全面升级,成为迄今为止OPPO A系列中性能最强大、防护能力最出色的机型。 回顾去年发布的OPPO …

    2026年9月21日
    000
  • 构建与调试PHP简易路由系统:从原理到实践

    本文将指导您如何从零开始构建一个基础的PHP路由系统,实现URL到控制器和方法的映射。我们将深入探讨$_SERVER[‘REQUEST_URI’]的解析、控制器文件的动态加载、方法调用以及如何通过.htaccess进行URL重写。同时,文章还将详细讲解常见的“未定义变量”错误…

    2026年9月21日
    100
  • windows10如何查看S.M.A.R.T.硬盘状态_windows10硬盘S.M.A.R.T.状态查看方法

    电脑运行慢、蓝屏或文件损坏可能是硬盘故障前兆,可通过S.M.A.R.T.技术检测健康状况。1、使用WMIC命令行工具输入“wmic diskdrive get model,status”查看状态,显示Pred Fail需立即备份数据;2、CrystalDiskInfo可深度分析S.M.A.R.T.参…

    2026年9月21日
    100
  • Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧

    Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧

    Photopea的AI功能通过智能选择工具与内容感知技术结合,实现高效图片裁剪。首先使用对象选择、快速选择或魔棒工具智能识别主体或背景,再通过“选择并遮住”精细调整边缘,尤其适用于复杂轮廓如发丝。随后可应用图层蒙版透明化背景,并用裁剪工具调整画布范围。结合内容感知填充可移除干扰元素并自动补全画面,内…

    2026年9月21日 用户投稿
    300
  • Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担

    Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担

    在web开发中使用mysql存储过程能有效封装逻辑并减少前端负担,本文介绍了其优势、环境配置及实战技巧。一、存储过程的优势包括减少网络传输、提高性能、统一业务逻辑;二、sublime text配置步骤为安装package control、sublimerepl插件、sql语法高亮插件,并建议新建.s…

    2026年9月21日 用户投稿
    800
  • Linux中如何安装Redis_Linux安装Redis服务的完整教程

    安装编译环境和依赖:Ubuntu/Debian用apt安装build-essential tcl wget,CentOS/RHEL用yum安装Development Tools和tcl wget。2. 下载Redis 7.2.4源码包并%ignore_a_1%,进入目录后执行make编译,可选mak…

    2026年9月21日
    000
  • 小红书从哪里看私信记录?私信记录如何清理?

    在小红书上与朋友或喜欢的博主互动时,私信是必不可少的沟通方式。不少新手用户常常困惑于如何查找过往的聊天内容。本文将为你详细说明查看私信记录的具体步骤,并分享几种实用的清理方法,帮助你轻松管理私信箱,让对话界面更清爽。 一、如何找到小红书的私信记录? 查看私信的操作非常直观,只需几个简单步骤即可完成。…

    2026年9月21日
    000
  • 编译CEGUI「建议收藏」

    大家好,很高兴再次与你们见面,我是你们的老朋友全栈君。 平台: Windows 7 / 64位 / VS2005 CEGUI下载 地址:https://www.php.cn/link/9a2327a2fcc570914ce9c9e61581cbf8 源码选择: CEGUI 0.7.9 库源码下载 这…

    2026年9月21日
    000
  • 英睿达T700 4TB对决WD_BLACK SN850X 4TB:PCIe 5.0 SSD的连续读写,在实际游戏中加载速度差异明显吗?

    在绝大多数游戏加载场景中,英睿达T700 4TB与WD_BLACK SN850X 4TB速度差异不明显,因游戏加载受限于4K随机读取性能及系统瓶颈,而非连续读取速度;尽管T700峰值更高,但实际加载表现受CPU、内存和散热限制,SN850X已能满足需求。 直接说结论:在绝大多数实际游戏加载场景中,英…

    2026年9月21日
    100
  • VSCode代码空格怎么解决_VSCode缩进与格式处理教程

    解决VSCode代码空格和缩进问题,需配置settings.json中的缩进规则并引入外部格式化工具。首先设置”editor.tabSize”、”editor.insertSpaces”和”editor.detectIndentation&…

    2026年9月21日
    100
  • PHP框架中间件有什么用处_PHP框架中间件设计与实现

    PHP框架中间件是处理请求和响应的过滤器,用于实现身份验证、日志记录、CORS等通用逻辑,核心价值在于解耦和提升可维护性。通过定义中间件接口、具体中间件类及管道调度器可实现自定义中间件,如身份验证或CORS处理。在Laravel中可通过Kernel.php配置全局、分组或路由级中间件,执行顺序按注册…

    2026年9月21日
    000
  • 苹果手机4800万像素功能如何开启

    苹果手机4800万像素模式开启方法 若想使用苹果手机的4800万像素拍摄功能,首先需确认您的设备型号及系统版本是否支持该功能。进入手机“相机”应用后,前往系统设置中的“相机”选项,查找“分辨率”或“格式”相关设置。部分机型在此处会提供“HEIF高效率”或“ProRAW”选项,启用后可激活4800万像…

    2026年9月21日
    200
  • 52核+288MB缓存痛击AMD锐龙X3D Intel确认Nova Lake史上最强

    10月26日消息,在amd推出锐龙x3d家族处理器后,凭借超大容量的3d缓存实现了游戏性能的全面反超,成功登顶最强游戏cpu宝座。 过去,Intel酷睿处理器虽在多核性能上稍逊一筹,但在游戏领域始终占据主导地位。然而,随着X3D系列的强势崛起,这一最后的防线也被攻破。此前,Intel已公开承认其在桌…

    2026年9月21日
    000
  • Java中字符到数字转换:解决for循环提前返回的常见陷阱

    本文探讨java中`for`循环在字符到数字转换时,因`return`语句放置不当导致程序提前终止、无法完整处理字符串的问题。我们将分析这种常见陷阱,并提供修正方案,演示如何正确利用循环填充数组,并在循环结束后统一返回最终结果,确保每个字符都能被准确映射和组合。 引言:字符到数字的映射需求 在编程实…

    2026年9月21日
    000
  • 燕云十六声装备回收转流派技巧分享

    燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享

    燕云十六声中,装备是角色变强的关键所在!武器、防具、饰品各具特色,品质更是分为绿、蓝、紫、金四个等级。想要高效提升战力、不浪费培养资源?那就必须掌握装备回收技巧与流派转换策略。具体怎么操作?继续往下看,实用攻略全解析助你轻松上手! 燕云十六声装备回收与转流派技巧指南 一、装备和武学的区别要分清 新手…

    2026年9月21日 用户投稿
    100
  • Linux如何查看网络带宽使用情况

    使用iftop实时查看网络连接带宽,nethogs按进程监控流量,sar查看历史网络统计,vnstat记录长期流量,四者分别适用于实时监控、进程定位、短期统计和长期分析。 在Linux系统中,查看网络带宽使用情况有多种方法,可以通过命令行工具实时监控网络流量和带宽占用。以下是几种常用且实用的方式。 …

    2026年9月21日
    100

发表回复

登录后才能评论
关注微信