0

0

用于查找最小缺失数字的 JavaScript 程序

PHPz

PHPz

发布时间:2023-09-01 15:29:07

|

1292人浏览过

|

来源于tutorialspoint

转载

用于查找最小缺失数字的 javascript 程序

我们得到了一个由不同非负整数组成的排序数组,在​​这里我们必须找到最小的缺失数。因此,在本教程中,我们将探索解决此问题的不同方法,并通过各种示例讨论其时间复杂度。

理解问题

问题描述很简单。给定一个不同非负整数的排序数组,我们需要找到其中最小的缺失数。让我们举个例子来理解这个问题。

示例

假设我们有一个数组 [1, 2, 4, 5, 6]。在这里,我们可以看到这个数组中的数字 2 和 4 之间有一个空格。这种差异表明有一个数字丢失了。现在我们必须找到适合该位置的最小数字。

要判断是否缺少数字,我们首先要查看数组中是否包含数字3。如果数组中不存在数字 3,我们可以说它是缺失数字,因为数字 3 不包含在数组中。

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

现在让我们看看解决这个问题的一些方法。

方法 1:朴素方法

解决此问题的最简单方法之一是循环数组并确保每个项目都位于正确的位置。如果元素不在正确的位置,我们会发现最小的缺失数。

示例

这是上述解释的代码 -




   

Find Smallest Missing Number

Array: [0, 1, 2, 3, 5, 6]

Result:

由于我们要遍历整个数组,因此该方法的时间复杂度为 O(n)。

但是,这个解决方案效率低下,因为它没有利用“向我们提供了一个已排序的数组”这一事实。

方法2:二分查找法

在这里,我们将使用二分搜索方法来更有效地解决这个问题。在这种方法中,我们对数组中不存在的第一个元素进行二分搜索。这种方法的代码是 -

示例




   

由于我们正在进行二分搜索,因此上述方法的时间复杂度为 O(log n)。

LALALAND
LALALAND

AI驱动的时尚服装设计平台

下载

这种方法比我们简单的方法更有效,因为它利用了数组已排序的事实。

方法三:线性搜索法

我们将讨论的第三种方法是线性搜索方法。此方法依赖于数组已排序的事实,这将允许我们应用线性搜索来识别丢失的数字。

线性搜索方法的工作原理是迭代数组并将每个成员与其索引进行比较。如果某个元素的索引不等于其值,则缺少的元素位于数组中位于该元素之前的其他位置。我们返回缺失元素的索引。

示例

线性搜索方法的代码如下 -




   

Find Smallest Missing Number

Array: [1, 2, 3, 5]

Result:

这种方法的时间复杂度是 O(n),因为我们要迭代整个数组。

这种方法的效率低于二分搜索方法,但对于小型数组很有用。

方法4:改进的二分查找

我们将讨论的第四种方法是改进的二分搜索方法。此方法与二分查找方法非常相似,只不过我们不是将中间元素与缺失的整数进行比较,而是将其与其索引进行比较。

修改后的二分搜索方法背后的基本思想是在每一步将数组分成两半,并将中间元素与其索引进行比较。如果中间元素大于其索引,则缺失的成员必须位于数组的左半部分。如果中间元素等于或小于其索引,则缺失的元素一定位于数组的右半部分。

示例

这是修改后的二分查找方法的代码实现 -




   

Find Smallest Missing Number

Predefined array:


   
   

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

84

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

24

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

56

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

26

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号