计算两个数组的差集

原创 2018年04月17日 15:12:40

给你两个分别有 5000 个元素的数组,计算他们的差集

方案1

循环第一个数组 ,判断item是否在第二个数组里,如果在,则unset掉这个键,最后剩下的数组就是差集

function array_diff($array_1, $array_2) {
    foreach ($array_1 as $key => $item) {
        if (in_array($item, $array_2, true)) {
            unset($array_1[$key]);
        }
    }
    return $array_1;
}

方案2 (最优 效率最快)

将第二个数组进行键值反转,循环遍历第一个数组,用item当做key 判断数组2中是否存在,存在则unset掉数组1的这个key,最后剩下的数组就是差集

function array_diff($array_1, $array_2) {
        $array_2 = array_flip($array_2);
        foreach ($array_1 as $key => $item) {
            if (isset($array_2[$item])) {
                unset($array_1[$key]);
            }
         }
        return $array_1;
    }

方案2比方案1的速度快的原因:因为键是进行 HASH 组织的,查找很快;而 Value 只是由 Key 组织存放,本身没有索引,每次查找都是遍历。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_28156831/article/details/79975224

数组

-
  • 1970年01月01日 08:00

求两个数组的交集、并集和差集算法分析与实现

一、数组内数据无序且可以重复 本文采用一种交换的方式来求出两个数组的并集,交集和差集,这种算法运算速度较快,内存消耗空间较少,是一个值得学习的好方法,另外,作者提醒您,重要的不是算法本身,而是该算...
  • tianmo2010
  • tianmo2010
  • 2013-06-05 17:02:11
  • 7011

JS求两个数组 差集

var tmp = new Array(); var org_random = new Array(1,2,3,4,5,6,7,8,9,10);//此为全集 var already_drawpa...
  • A9925
  • A9925
  • 2016-04-12 17:38:34
  • 1107

两个数组并集 交集 差集的算法思想与实现

算法概述: 两个任意元素的数组,比较出两个数组中相同的元素和不同的元素。   元素划分: 计算过程中,两个数组内部元素的划分:   算法流程: 从数组1的尚未比较的元素中拿出第一个元素arr...
  • bing_dian
  • bing_dian
  • 2013-11-03 00:04:26
  • 1512

C#控制台基础 两个int类型数组,求交集,并集,差集

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 using System; using System.Collections.Gener...
  • yushaopu
  • yushaopu
  • 2016-09-04 21:31:15
  • 1081

求js两个数组的差集,以便测试

  • 2010年04月25日 22:43
  • 533B
  • 下载

JavaScript 中求出两个数组的交集和差集

es6 let intersection = a.filter(v => b.includes(v)) let difference = a.concat(b).filter(v => !a.incl...
  • a1104258464
  • a1104258464
  • 2016-10-11 10:21:59
  • 3682

PHP获得数组的交集与差集

数组的交集 array_intersect() array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下: ar...
  • k8080880
  • k8080880
  • 2014-05-03 11:19:37
  • 5741

java List 求两个数组的交集、求两个数组的差集

package com.e1Soft.jygl.util; import java.util.HashMap; import java.util.HashSet; import java...
  • p451933505
  • p451933505
  • 2012-11-28 17:08:59
  • 11565

求两个自定义对象构成的数组的差集

#import "ViewController.h" @interface Person : NSObject @property(nonatomic,strong)NSStri...
  • gaoyp
  • gaoyp
  • 2014-03-28 18:14:29
  • 1351
收藏助手
不良信息举报
您举报文章:计算两个数组的差集
举报原因:
原因补充:

(最多只允许输入30个字)