leeCode算法--求俩个数组的交集

题目:给定两个数组,编写一个函数来计算它们的交集。

分析:这是一个较为基础且常见的题,方法很多,比如:双指针法,去重法,二分查找法等:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var intersection = function(nums1, nums2) {
let arr = []
for (let i =0;i<nums1.length;i++) {
for (let j=0;j<nums2.length;j++) {
if (arr.indexOf(nums1[i]) === -1
&& arr.indexOf(nums2[j]) ===-1
&& nums1[i] === nums2[j]) {
arr.push(nums2[j])
}
}
}
return arr
}
intersection([1,2,2,1], [2,2]) // [2]
intersection([4,9,5], [9,4,9,8,4]) // [4,9]

运行结果: 执行用时:596 ms, 在所有 JavaScript 提交中击败了5.22的用户
内存消耗:38 MB, 在所有 JavaScript 提交中击败了99.13%的用户
可以看到双指针法的时间复杂度较高,而空间复杂度低。

1
2
3
4
5
var intersection = function(nums1, nums2) {
return [...new Set(nums1)].filter(n => nums2.includes(n))
}
intersection([1,2,2,1], [2,2]) // [2]
intersection([4,9,5], [9,4,9,8,4]) // [4,9]

先用new Set()对nums1去重,再过滤,这种方法本人认为局限性较大。

That’s all!

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信