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

javascriptweb developmentobject oriented programming

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

理解问题

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

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

给定问题的逻辑

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

算法

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

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

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

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

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

步骤 6:现在我们将检查计算出的差异是否小于当前的最小差异。然后我们将更新最接近当前项目的变量。同时将 minDifference 变量更新为计算出的差值。

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

示例

// 获取最接近目标值的函数
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("最接近的数字:", nearestNum);

输出

最接近的数字:7

复杂度

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

结论

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


相关文章