JavaScript 给定一个整数数组返回其中出现的正数,其等效的负数
在给定的问题陈述中,我们有一个包含正值和负值的数组。所以我们的任务是保留正数并从数组中过滤出负数。然后在JavaScript中实现解决方案。
理解问题
我们将获得一个整数数组,我们需要找到其中的正整数,它们在数组中有相应的负整数。例如,假设我们有一个整数数组[7, -7, 8, -8, 9, -9],在这个数组中我们可以看到有一些正整数和一些负数存在,所以我们的任务是将数组中保留只有正数,并从数组中过滤掉负数,所以输出或者数组将是[7, 8, 9]。因此,我们将实现程序来执行此操作。
解题思路
问题陈述指出我们必须从数组中提取具有相应负整数的正整数。所以我们将遍历给定的整数数组。对于数组中的每个项,我们将按照某些步骤进行操作。如果迭代过程中的项是正数,我们将将其添加到一个集合中。这个集合将存储所有的正数。如果项是负数,我们将检查其绝对值是否存在于集合中;如果存在,那么意味着数组中存在这个负数的正数对应项。所以我们将把该精确值添加到结果数组中。最后,我们将返回包含正整数和对应负数值的结果。
步骤
步骤1 :首先,定义一个函数来查找数组中存在的负数的正数。给这个函数取一个名字作为findPositives,这个函数将接受一个数组作为参数。
步骤2 :创建一个集合来存储数组的正数集。同时定义一个空数组来存储结果。
步骤3 :然后,我们将遍历整数数组,并对数组中的每个项进行一些条件判断。首先判断条件,检查项是否为正数且大于0。如果条件为真,则将其添加到一个名为positiveSet的集合中。这个变量将用于存储数组中存在的所有正整数。
步骤4 :检查项是否为负数或小于0。判断其绝对值是否存在于正数集合中。如果条件为真,则表示数组中存在该负数的正数。将该值添加到结果数组中。
步骤5 :最后,返回与负值相对应的数组中的正值的结果。
示例
//Function to find the positives into the array with their respective negatives
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)。
结论
该程序有效地找到了一个解决方案,用于获取数组中存在对应负值的正整数。因为我们遍历了整个数组,并维护了一个正整数的集合来检查其对应的负整数。总体而言,我们可以说这是一个直接的解决方案,具有线性时间复杂度。