两个数组中交集的个数是否相等
程序员文章站
2024-02-08 23:50:46
...
统计两个数组中交集的个数是否相等 谢谢
====================================
补充:
$a=array('1','2');
$b=array('1','2','3','2');
再数组a中1和2分别出现了一次
但在数组b中1出现一次,2出现两次
交集是1和2 我现在想知道出现的次数是否相等
回复内容:
统计两个数组中交集的个数是否相等 谢谢
====================================
补充:
$a=array('1','2');
$b=array('1','2','3','2');
再数组a中1和2分别出现了一次
但在数组b中1出现一次,2出现两次
交集是1和2 我现在想知道出现的次数是否相等
既然是交集,那就应该是相等的了,两个数组都有的元素才叫交集。集合概念你没弄懂,集合是不允许有重复元素的。
集合的基础概念理解有偏差,集合中元素是互斥的,所以都只会出现一次。相应的,交集的元素在各集合都只会出现一次。
看你举例的需求,将算出来的交集遍历一下进行判断就好了。
$arr1 = [1,2];
$arr2 = [1,2,3,2];
$intersect = array_intersect($arr1, $arr2);
$result = array();
foreach ($intersect as $item) {
$result[$item] = array('arr1' => 0, 'arr2' => 0);
}
foreach ($arr1 as $item) {
if (isset($result[$item])) {
$result[$item]['arr1'] += 1;
}
}
foreach ($arr2 as $item) {
if (isset($result[$item])) {
$result[$item]['arr2'] += 1;
}
}
推荐阅读
-
从一个升序的数组中找出和为sum的两个数
-
求解数组中任意两个元素的和最接近某一个数
-
给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
-
416.分割等和子集(给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。)
-
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%100000000...
-
交换两数组中的元素使得这两个数组的差最小
-
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。
-
读一个数,判断这个数是否在数组中并找出所在的位置
-
快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值
-
个有序的整形数组,给定一个数,在数组中找出两个数的和等于这个数,并打印其下标