两个有序非重数组,如果查找数组之间的重复元素
一个元素多,一个少,都是整数
[解决办法]
有序,这点很重要。(假定为升序来说明)
可以放两个指针,分别指向两个数组的头。假设为 *p1 和 *p2吧
1、*p1 == *p2(这里数据类型是整数,可以这么做)时,这两个数重复,输出,并且 p1++, p2++;
2、*p1 < *p2 时,p1++;
3、*p1 > *p2 时,p2++;
重复以上步骤,直到有一个指针指向数组的末端(这里可以加一个足够特别的数在数组末端来表示数组取值结束,比如超出取值范围的数)
static const int END = -100000;
int data1[] = {1, 2, 4, 5, 6, 7, END};
int data2[] = {3, 5, 6, END};
int *p1 = data1;
int *p2 = data2;
while (*p1 != END && *p2 != END)
{
if (*p1 == *p2)
{
cout << *p1 << " == " << *p2 << endl;
p1++;
p2++;
}
else if (*p1 < *p2)
{
p1++;
}
else // *p1 > *p2
{
p2++;
}
}