给定一个整数数组,返回正数,其等效负数在 JavaScript 中存在于其中

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/12/9 3:56:17

在给定的问题陈述中,我们得到了一个包含正值和负值的数组。所以我们的任务是保留正数一次并从数组中过滤掉负数。并在 Javascript 中实现解决方案。

理解问题

我们将得到一个整数数组,我们需要找到数组中存在相应负整数的正整数。例如,假设我们有一个整数数组,如 [7, -7, 8, -8, 9, -9],在这个数组中我们可以看到它们有一些正整数和一些负数,所以我们在这个问题中的任务是过滤这个数组,只保留正数,并从数组中过滤掉负数,这样输出或数组将是 [7, 8, 9]。因此,我们基本上将实现执行此操作的程序。

给定问题的逻辑

问题陈述表明我们必须从数组中提取具有相应负整数的正整数。因此,我们将迭代给定的数字数组。对于数组中的每个项目,我们将遵循某些步骤。如果迭代中的项目为正,则我们将将其添加到集合中。该集合将存储所有正数。如果项目为负,则我们将检查其绝对值是否存在于集合中;如果存在,则意味着该负数的正对应项存在于数组中。因此,我们将将精确值添加到结果数组中。最后,我们将返回包含具有各自负值的正整数的结果。

算法

步骤 1:首先,定义一个函数来查找数组中存在的相应负数的正数。并将该函数命名为 findPositives,该函数将以数组形式接受参数。

步骤 2:创建一个集合来存储数组的正集。并定义一个空白数组来存储结果。

步骤 3:然后我们将遍历整数数组。我们将检查数组中每个项目的一些条件。第一个条件是检查该项目是否为正且大于 0。如果条件为真,我们将把它添加到一个名为 positiveSet 的集合中。此变量将用于存储数组中存在的所有正整数。

步骤 4:检查该项目是否为负数或小于 0。因此确定它的绝对值是否存在于正集中。如果条件为真,则表明负数的正数存在于数组中。因此将该值添加到结果数组中。

步骤 5:最后,返回数组中正值相对于其负值的结果。

示例

//函数用于将正值与相应的负值一起放入数组中
function findPositives(arr) {
   const positiveSet = new Set();
   const result = [];
 
   for (let num of arr) {
   if (num > 0) {
      positiveSet.add(num);
   } else if (num < 0 && positiveSet.has(Math.abs(num))) {
   result.push(Math.abs(num));
   }
}
 
    return result;
}
const array = [1, -1, 2, -2, 3, -4, 4, 5, -5];
const positives = findPositives(array);
 
console.log(positives);

输出

[ 1, 2, 5 ]

复杂性

由于代码在循环中遍历数组一次并对每个项目执行恒定时间操作。因此代码的时间复杂度为 O(n),其中 n 是输入数组的大小。代码的空间复杂度也是 O(n)。

结论

该程序有效地找到了一个解决方案来获取数组中具有各自负值的正整数。由于我们遍历了数组并维护了一组正整数来检查其对应的负整数。总的来说,我们可以说这是一个具有线性时间复杂度的给定问题的直接解决方案。


相关文章


有用资源