两个数组的交集

题意:

给定两个数组 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

来源: 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;
}
相关推荐
发量惊人的中年网工2 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
罗西的思考3 小时前
【Agentic RL】Dressage Staleness 控制深度分析
人工智能·算法·机器学习
quaer3 小时前
弗洛伊德算法--判圈法寻找环的入口O(n) O(1)
数据结构·算法
益莱储中国3 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
高晶5 小时前
无乘法器实现LC二阶滤波器:基于移位运算的快速算法与四种精度推导
算法·设计模式·程序员
ysbfsy5 小时前
大数计算思路
算法
吹什么轩5 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
高晶5 小时前
主从自动分配算法:平均值乘以设备数一半的选举基准值解析
算法·设计模式·程序员
专注仿真5 小时前
ThinkPHP6 API接口开发实例:从零搭建RESTful风格接口
后端·php·restful
学电子她就能回来吗5 小时前
LeetCode Hot 100|普通数组专题学习笔记(零基础版)
笔记·算法·leetcode