从 JavaScript 数组中查找第 n 个缺失数字
在提到的问题中,我们的目标是在给定的数组中找到第 n 个缺失数字并在 Javascript 中实现其解决方案。为了解决这个问题,我们将使用 for 循环和一些 Javascript 的基本函数。
给定问题的逻辑
我们的任务是在数组中找到第 n 个缺失数字。为了解决这个问题,我们将定义两个变量来了解缺失数字的位置和前一个元素。
因此,遍历输入数组并检查当前项目和前一个项目之间是否存在缺失项目。如果在这两个项目之间存在缺失数字,则增加缺失项目的计数。如果计数达到给定数字,则函数将计算并返回数组中缺失的数字。
算法
步骤 1 − 定义一个函数,该函数将接受两个参数 − 一个数组和 n 的值。此函数将执行查找并返回第 n 个缺失数字的必要操作。
步骤 2 − 需要跟踪当前值和前一个值,将这两个变量的初始值都设置为零。
步骤 3 − 使用 for 循环遍历定义的数组的项目。在此循环内,检查数组数字和前一个数字的差值。如果它大于 1,则将计数增加这两个数字的差值。
步骤 4 − 检查计数值是否大于或等于 n 的指定值。如果条件为真,则通过从当前值中减去 n 并将其添加到数组中的前一个数字来计算并返回缺失值。
步骤 5 − 因为我们想显示第 n 个缺失数字。
算法代码
//function to get the required item
function findMissingNumer(numArr, n) {
let missingCount = 0;
let prevNum = 0;
for (let i = 0; i < numArr.length; i++) {
const currNum = numArr[i];
if (currNum - prevNum > 1) {
missingCount += currNum - prevNum - 1;
if (missingCount >= n) {
const diff = n - (missingCount - currNum + prevNum + 1);
return prevNum + diff;
}
}
prevNum = currNum;
}
return prevNum + n - missingCount;
}
const arr = [1, 4, 6, 8, 10];
const n = 4;
const result = findMissingNumer(arr, n);
console.log(result);
时间和空间复杂度
上述代码的函数运行 n 次,因此时间复杂度为 O(n),因为循环的每个步骤都运行恒定时间以获取数组中所需的数字。并且算法消耗的空间为 O(1),因为我们只存储一个变量来存储缺失数字,而不是任何其他数据结构或数组。
结论
我们已经看到的从数组中查找第 n 个缺失数字的代码利用基本的 JavaScript 操作来完成任务。该算法具有线性时间复杂度,这被认为是查找数组中第 n 个数字的有效解决方案。
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP