返回
LeetCode:巧用JS,轻松找出两个数组的交集
前端
2023-10-25 12:16:56
LeetCode是一家提供在线编程练习的网站,其中的题目涵盖了算法、数据结构、字符串、数组、哈希表等多种编程领域。如果您是一位编程爱好者或想要提高编程能力,那么LeetCode是一个非常适合您的平台。
今天的题目是「寻找两个数组的交集」。给定两个整型数组,要求找出这两个数组的交集,即找出同时存在于这两个数组中的元素。例如,对于数组[1, 2, 3, 4, 5]和[3, 4, 5, 6, 7],它们的交集是[3, 4, 5]。
这道题目的难点在于如何高效地找到两个数组的交集。一种朴素的解法是使用循环遍历两个数组,对于每个元素,在另一个数组中查找是否存在相同的元素。如果找到相同的元素,则将其加入到交集数组中。然而,这种解法的时间复杂度为O(n^2),对于大规模数组,这种解法会非常慢。
为了提高解题效率,我们可以使用集合来对数组进行去重。集合是一种数据结构,它可以自动去除重复元素。我们将两个数组分别转换成集合,然后遍历其中一个集合,对于每个元素,在另一个集合中查找是否存在相同的元素。如果找到相同的元素,则将其加入到交集数组中。这种解法的时间复杂度为O(n),对于大规模数组,这种解法会非常快。
以下是使用JavaScript实现的解题代码:
/*
* 给定两个整型数组,找出这两个数组的交集,即找出同时存在于这两个数组中的元素。
*
* 例如,对于数组[1, 2, 3, 4, 5]和[3, 4, 5, 6, 7],它们的交集是[3, 4, 5]。
*
* @param {number[]} nums1 第一个数组
* @param {number[]} nums2 第二个数组
* @return {number[]} 两个数组的交集
*/
const intersection = (nums1, nums2) => {
// 将两个数组分别转换成集合
const set1 = new Set(nums1);
const set2 = new Set(nums2);
// 遍历其中一个集合
const intersection = [];
for (const num of set1) {
// 如果在另一个集合中找到相同的元素,则将其加入到交集数组中
if (set2.has(num)) {
intersection.push(num);
}
}
// 返回交集数组
return intersection;
};
通过使用集合,我们大大提高了求解两个数组交集的效率。这种解法的时间复杂度为O(n),即使对于大规模数组,这种解法也会非常快。
希望本文对您有所帮助。如果您有任何问题或建议,请随时留言。