本文主要是介绍【数据结构与算法】力扣 349. 两个数组的交集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定两个数组 nums1
和 nums2
,返回 *它们的 *
交集
。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
解释: [4,9] 也是可通过的
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
分析解答
看到唯一,可以直接想到用 Set。然后思路嘛,没什么难的,直接上代码。
/*** @param {number[]} nums1* @param {number[]} nums2* @return {number[]}*/
var intersection = function (nums1, nums2) {let res = []for (let i = 0; i < nums1.length; i++) {let item = nums1[i]for (let j = 0; j < nums2.length; j++) {if (item == nums2[j]) {res.push(item)}}}return [...new Set([...res])]
};
let nums1 = [1, 2, 2, 1], nums2 = [2, 2]
console.log(intersection(nums1, nums2))
思路拓展
就是一些简单点的写法。
/*** @param {number[]} nums1* @param {number[]} nums2* @return {number[]}*/
var intersection = function (nums1, nums2) {if (nums1.length < nums2.length) {[nums1, nums2] = [nums2, nums1]}let nums1Set = new Set(nums1)let resSet = new Set()// for (const number of nums2) {// nums1Set.has(number) && resSet.add(number)// }// 循环 比 迭代器快for(let i = nums2.length - 1; i >= 0; i--) {nums1Set.has(nums2[i]) && resSet.add(nums2[i]);}return Array.from(resSet)
};let nums1 = [1, 2, 2, 1], nums2 = [2, 2]
console.log(intersection(nums1, nums2))
// intersection(nums1,nums2)
/*** @param {number[]} nums1* @param {number[]} nums2* @return {number[]}*/
var intersection = function (nums1, nums2) {return Array.from(new Set(nums1.filter(item => nums2.includes(item))))
};let nums1 = [1, 2, 2, 1], nums2 = [2, 2]
console.log(intersection(nums1, nums2))
// intersection(nums1,nums2)
这篇关于【数据结构与算法】力扣 349. 两个数组的交集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!