给定一个包含整数的数组,返回其中存在对应负数的正数(使用 JavaScript 实现)。
在给定的问题陈述中,我们得到一个包含正数和负数的数组。因此,我们的任务是保留正数,并从数组中过滤掉负数。并在 Javascript 中实现该解决方案。
理解问题
我们将得到一个整数数组,我们需要找到存在对应负整数的正整数。例如,假设我们有一个整数数组,例如 [7, -7, 8, -8, 9, -9],在这个数组中,我们可以看到存在一些正整数和一些负数,因此我们在这个问题中的任务是过滤这个数组,只保留正数并从数组中过滤掉负数,因此输出或数组将是 [7, 8, 9]。所以基本上我们将实现程序来执行此操作。
给定问题的逻辑
问题陈述指出,我们必须从数组中提取存在对应负整数的正整数。因此,我们将遍历给定的数字数组。对于数组中的每个项目,我们将遵循某些步骤。如果迭代中的项目为正数,则将其添加到集合中。此集合将存储所有正数。如果该项目为负数,则我们将检查其绝对值是否存在于集合中;如果存在,则表示此负数的正对应项存在于数组中。因此,我们将精确值添加到结果数组中。最后,我们将返回包含存在对应负值的正整数的结果。
算法
步骤 1:首先,定义一个函数来查找数组中存在对应负数的正数。并将此函数命名为 findPositives,此函数将采用数组作为参数。
步骤 2:创建一个集合来存储数组的正数集合。并定义一个空数组来存储结果。
步骤 3:然后我们将遍历整数数组。我们将检查数组中每个项目的某些条件。第一个条件是检查该项目是否为正数且大于 0。如果条件为真,则将其添加到名为 positiveSet 的集合中。此变量将用于存储数组中存在的所有正整数。
步骤 4:检查项目是否为负数或小于 0。因此确定其绝对值是否存在于正数集合中。如果条件为真,则表明负数的正数存在于数组中。因此,将该值添加到结果数组中。
步骤 5:最后,返回数组中关于其负值的正值的result。
示例
//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)。
结论
该程序有效地找到了一个解决方案,以获取存在对应负值并在数组中可用的正整数。因为我们已经遍历了数组并维护了一个正整数集合来检查其对应的负整数。总的来说,我们可以说这是给定问题的直接解决方案,具有线性时间复杂度。