Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述
- 给定两个数组
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 <= 10000 <= nums1[i], nums2[i] <= 1000
二、思路分析:
- 返回交集:即返回数组中相同部分,并且返回的结果每个元素唯一,即返回前需要去重
- 首先循环找出数组中相同部分,将相同部分保存到数组变量中
- 返回前利用
Set去重,返回去重后的数组
三、AC 代码:
function intersection(nums1: number[], nums2: number[]): number[] {
let result = [];
for(let i = 0; i < nums1.length; i++){
for(let j = 0; j < nums2.length; j++){
if(nums1[i] === nums2[j]){
result.push(nums2[j])
}
}
}
return [...new Set(result)]
};
四、总结:
- 复杂度更低的方式可以移步题解区看看
HashSet + 双指针或者map解法 - 数组去重有很多方式,这里为了代码简洁,就使用了
Set,查看其他方式