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代码中,我们可以找到数组中与给定值最接近的数字。代码遍历数组,将每个元素与目标值进行比较,并在找到更接近的数字时更新最接近的数字。