【发布时间】:2012-11-06 14:55:33
【问题描述】:
我有那些正在创建交集/联合但只是两个数组的函数。
我也需要改进它们以使用 n 数组:arr = {{1,2,3},{1,5,6},...,{1,9}}。
数组是有序的,它们的元素是唯一的。
示例(交叉口):
输入:{{1,2,3,4},{2,5,4},{4,7,8}}
输出:{4}
arr1[],arr2 - 数组
m,n - 数组的长度
交集函数:
int printIntersection(int arr1[], int arr2[], int m, int n)
{
int i = 0, j = 0;
while(i < m && j < n)
{
if(arr1[i] < arr2[j])
i++;
else if(arr2[j] < arr1[i])
j++;
else /* if arr1[i] == arr2[j] */
{
printf(" %d ", arr2[j++]);
i++;
}
}
}
和联合函数:
int printUnion(int arr1[], int arr2[], int m, int n)
{
int i = 0, j = 0;
while(i < m && j < n)
{
if(arr1[i] < arr2[j])
printf(" %d ", arr1[i++]);
else if(arr2[j] < arr1[i])
printf(" %d ", arr2[j++]);
else
{
printf(" %d ", arr2[j++]);
i++;
}
}
while(i < m)
printf(" %d ", arr1[i++]);
while(j < n)
printf(" %d ", arr2[j++]);
}
【问题讨论】:
-
这个:- stackoverflow.com/questions/8890154/… 有帮助吗?
-
为什么不在 n 个数组上循环调用任一函数,并使用解决方案 -so-far 数组和下一个数组。