两个数组的交集

题意:

给定两个数组 nums1nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

示例 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

来源: https://leetcode.cn/problems/intersection-of-two-arrays/description/

解题方法:

方法一:使用PHP内置函数,取交集再去重

php 复制代码
// PHP内置函数
function intersection($nums1, $nums2) {
    return array_unique(array_intersect($nums1,$nums2));
}

方法二:暴力使用双循环

php 复制代码
// 双层嵌套循环
function intersection($nums1, $nums2) {
    $intersect_arr = [];
    $len1 = count($nums1);
    $len2 = count($nums2);
    for($i = 0; $i < $len1; $i++){
        for($j = 0; $j < $len2; $j++){
            if($nums1[$i] == $nums2[$j] && !isset($intersect_arr[$nums2[$j]])){
                $intersect_arr[$nums2[$j]] = $nums2[$j];
            }
        }
    }
    return $intersect_arr;
}

方法三:hash表,循环两次(与双层嵌套循环不同)

php 复制代码
//hash表,循环两次(与双层嵌套循环不同)
function intersection($nums1, $nums2) {
    $count = [];
    $res = [];
    foreach($nums1 as $num){
        $count[$num] = 1;
    }
    foreach($nums2 as $num){
        if(isset($count[$num])){
            $res[] = $num;
        }
        unset($count[$num]);
    }
    return $res;
}

方法四:循环一次,但是使用了内置函数

php 复制代码
// 一次循环,利用长度做判断,判断是否在另一个中和结果集中
function intersection($nums1, $nums2) {
    $res = [];
    if(count($nums2) > count($nums1)){
        foreach($nums1 as $num){
            if(in_array($num, $nums2) && !in_array($num, $res)){
                $res[] = $num;
            }
        }
    }else{
        foreach($nums2 as $num){
            if(in_array($num, $nums1) && !in_array($num, $res)){
                $res[] = $num;
            }
        }
    }
    return $res;
}
相关推荐
Matrix_111 分钟前
第13篇:非线性位移场——漩涡、鱼眼、水波纹与球面化
图像处理·算法
Lucky_ldy2 分钟前
数据结构从入门到精通:顺序表
数据结构·链表
金牌归来发现妻女流落街头3 分钟前
【LeetCode 第207题】
算法·leetcode·拓扑·领接表
熬夜敲代码的猫9 分钟前
AVL树(C++详解版)
数据结构·c++·算法
-To be number.wan31 分钟前
算法日记 | STL-MAP
c++·算法
cjp56032 分钟前
015. UG 二次开发,拉伸草图生成实体类,高级草图类封装
算法
Eric 辰东1 小时前
【C 语言程序的编译和链接】详解编译链接过程
c语言·笔记·算法·学习方法
并不喜欢吃鱼1 小时前
从零开始 C++-----十一【C++ 数据结构】红黑树全解析:从定义到工程实现(一文搞定,十分详细)
开发语言·数据结构·c++
星恒随风1 小时前
C语言数据结构排序算法详解(上):从插入排序、希尔排序到选择排序、堆排序
c语言·数据结构·笔记·学习·排序算法
迈巴赫车主1 小时前
蓝桥杯21247弹跳鞋java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯