从 JavaScript 数组中获取最接近的数字


在上述问题陈述中,我们需要从给定的数组中获取给定目标的最接近的数字。我们必须借助 Javascript 生成代码。

理解问题

手头的问题是在数组中找到给定目标值的最近数字。因此,可以使用逻辑算法来解决此问题,该算法将遍历数组并将每个项目与目标值进行比较。然后,我们将确定最接近的数字。因此,我们将使用 Javascript 来开发解决方案。

例如,假设我们有一个数组,例如 [7, 8, 1, 2, 5, 4],因此我们必须找到 4 的最接近的数字,在数组中比较数字 4 后,结果将为 5,因为 5 是最接近的数字。

给定问题的逻辑

为了解决给定的问题,我们将通过迭代数组的元素并比较当前项目与目标值之间的绝对差与先前最接近的数字与目标值之间的绝对差来找到数组中最接近的数字。我们还将跟踪找到的最接近的数字,以便在迭代期间找到更接近的数字时更新。

算法

步骤 1:由于我们需要找出给定目标在数组中的最接近的数字。为了执行此任务,我们将创建一个函数并将其命名为 getClosestNum。在这个函数中,我们将传递两个参数,第一个是目标值,第二个是数组。

步骤 2:定义函数后,在函数体内部,我们将初始化名为 closest 的变量。在这个变量中,我们将存储迄今为止找到的最接近的数字。并将其值设置为数组的第一个项目。

步骤 3:现在初始化另一个变量为 minDifference。此变量将存储最接近的数字与目标值之间的最小差值。并将其值设置为第一个数字与目标值之间的绝对差。

步骤 4:在此步骤中,我们将迭代数组中从第二个项目开始的其余项目。

步骤 5:在循环中,我们将计算当前项目与目标值之间的差值。

步骤 6:现在我们将检查计算出的差值是否小于当前的最小差值。然后,我们将 closest 变量更新为当前项目。并还将 minDifference 变量更新为计算出的差值。

步骤 7:最后,我们将返回 closest 变量,该变量保存数组中给定目标值的最近数字。

示例

// Function for getting closest number of target
function getClosestNum(target, array) {
   let closest = array[0];
   let minDifference = Math.abs(closest - target);

   for (let i = 1; i < array.length; i++) {
      const difference = Math.abs(array[i] - target);
      if (difference < minDifference) {
         closest = array[i];
         minDifference = difference;
      }
   }

   return closest;
}

const numbers = [4, 7, 2, 9, 5];
const targetNum = 6;
const closestNum= getClosestNum(targetNum, numbers);
console.log("Closest number:", closestNum);

输出

Closest number: 7

复杂度

在数组中查找给定目标的最接近数字的时间复杂度为 O(n),其中 n 是数组中的项目数。因为我们需要遍历数组中的每个项目一次,所以时间复杂度是线性的。并且代码的空间复杂度为 O(1),因为我们仅使用恒定数量的内存来存储最接近的数字和差值。

结论

在使用 Javascript 生成上述代码后,我们可以找到数组中给定值的最近数字。该代码遍历数组并将每个项目与目标值进行比较,并在找到更接近的数字时更新最接近的数字。

更新于: 2023-08-14

470 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告