JavaScript 查找给定数组中的第n个缺失数字

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个数字的高效解决方案。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程