public class Util{
//$flag 表示 相加 还是 并集
public static function add2Array($arr1,$arr2,$flag){
$size1 = count($arr1[0]);
$size2 = count($arr2[0]);
if($size1 == 0){
return $arr2;
}
if($size2 == 0){
return $arr1;
}
if($flag){//如果是日期那么就执行所有的合并操作
return Util::add2Array1($arr1,$arr2);
}else{//二维数组相加
return Util::add2Array2($arr1,$arr2);
}
}
/**
* array A + array B = array C
* example:
* 1 x1 2 y2 1 x1
* 2 x2 + 3 y3 = 2 x2+y2
* 3 x3 4 y4 3 x3+y3
* 5 y5 4 y4
* 5 y5
* */
static function add2Array1($arr1,$arr2){
$merge_arr = array_unique(array_merge($arr1[0],$arr2[0]));
asort($merge_arr);
foreach ( $merge_arr as $key => $val ) {
$key1 = array_search($val,$arr1[0]);//查找键值 没找到 返回false
$key2 = array_search($val,$arr2[0]);
$arr[0][$key] = $val;
if(in_array($val,$arr1[0]) && in_array($val,$arr2[0])){//如果两者都找到了
$arr[1][$key] = $arr1[1][$key1] +$arr2[1][$key2];
}else{
if(in_array($val,$arr1[0])){//如果只有2找到了
$arr[1][$key] = $arr1[1][$key1];
}else{
$arr[1][$key] = $arr2[1][$key2];
}
}
}
array_multisort($arr[0],$arr[1]);//最后对数组进行排序,使其按日期从小到大排序
return $arr;
}
/**
* array A + array B = array C
* example:
* 1 x1 2 y2 1 x1+y2
* 2 x2 + 3 y3 = 2 x2+y3
* 3 x3 4 y4 3 x3+y4
* 5 y5 4 y5
* */
static function add2Array2($arr1,$arr2){
$arr = null;
$size1 = count($arr1[0]);
$size2 = count($arr2[0]);
$max_size = max($size1,$size2);
for($i = 0;$i<$max_size;$i++){
$arr[0][$i] = (($arr1[0][$i] == null)? $arr2[0][$i]:$arr1[0][$i]);
$arr[1][$i] = (($arr1[1][$i] == null)?0:$arr1[1][$i])+(($arr2[1][$i] == null)? 0:$arr2[1][$i]);
}
return $arr;
}
}
分享到:
相关推荐
利用java 语言,实现数组的并集交集补集,数组可键入。
这篇文章主要介绍了Python数组并集交集补集代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 并集 a = ["a", "b", "c", "d"] b = ["b", "e"] c = ["a...
利用指针来实现动态数组,求两个集合的交集和并集。(要求用动态数组来实现)依次分别输入数组A、B长度,并输入A,B中元素,即可得到交集并集
本文通过多种实现方式给大家介绍了JS计算两个数组的交集、差集、并集、补集 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
例如,如果你有两个二维矩阵,可以使用`cat(3, matrix1, matrix2)`将它们沿着第三维方向连接成一个三维数组。此外,`squeeze`函数用于移除单个维度的大小为1的轴,而`permute`则允许你重新排列数组的维度。 接着,...
并集是指包含所有数组中不同元素的新数组,不包含重复项。这在处理数据集合或进行集合运算时非常有用。下面我们将详细讨论实现这个功能的JS代码及其相关知识点。 首先,让我们看一下`main.js`文件中的核心代码: `...
数组的并集.c
它的基本操作包括创建空集合、销毁集合、添加元素、删除元素、求并集、求交集、求差集以及打印集合。 在详细设计阶段,我们定义了元素类型为int,同时定义了链表结点类型和指针类型。有序表和集合的实现需要用到...
`avg`变量表示`a`数组元素的平均值,其计算方式是将数组所有元素相加后除以元素个数。在这个例子中,平均值为(1+2+3+4+5+6+7)/7 = 4。 最后,`Distinct()`方法用于去除数组`c`中的重复元素,生成一个只包含独特值的...
用C#简单实现了对字符串数组求交集并集,定义类
函数 [varargout] = union_several (varargin) % 函数 [varargout] = union_several (varargin) % varargout{1} 是联合向量% varargout{i>1} 是各种 varargin 的索引(按它们的顺序) numarr = 长度(可变参数);...
求java数组的交集,并集,差集 实现方法简单但很实用
在本篇内容中,我们将深入探讨如何在C#中实现两个字符串数组之间的交集、并集与差集操作。此示例代码展示了如何利用LINQ(Language Integrated Query)方法来处理数组之间的这些集合运算。 ### 一、背景介绍 #### ...
从数组1的尚未比较的元素中拿出第一个元素array1(i),用array1(i)与array2(j)进行比较(其中j>i且j的长度),可能出现下面两种情况, 1. 数组2中找到了一个与array1(i)相等的元素,则将array2(j)与array2(i)进行...
本篇将详细介绍如何使用JavaScript来获取两个数组的交集、差集、并集和补集,以及如何去除数组中的重复元素。这些操作在实际编程中非常实用,可以帮助我们有效地处理和分析数据。 首先,我们需要一个辅助方法`each`...
在数组中,元素通常是连续存储的,因此,访问和修改元素的时间复杂度为O(1)。这种特性使得顺序表在实现集合运算时效率较高。 **求并集** 集合的并集包含两个集合的所有元素,不考虑重复。在顺序表中,我们可以采用...