cpp
#include <stdlib.h>
#include <stdio.h>
int main()
{
// 必须有序
int a[]={1,2,3,4,5};
int b[]={1,2,4};
int sizeA=sizeof(a)/sizeof(a[0]);
int sizeB=sizeof(b)/sizeof(b[0]);
int i=0,j=0;
for(;;)
{
if(i<sizeA && j<sizeB)
{
if(a[i]==b[j])
{
printf("%d",a[i]);
i++;
j++;
}
else if(a[i]<b[j])
{
i++;
}else if(a[i]>b[j])
{
j++;
}
}else
{
break;
}
}
}
双指针或hash数组
c
#include <stdlib.h>
#include <stdio.h>
int main()
{
// 可以无序
int a[]={1,2,3,4,5};
int b[]={1,2,4};
int mark[1024];
for(int i=0;i<1024;i++)
{
mark[i]=0;
}
for(int i=0;i<sizeof(a)/sizeof(a[0]);i++)
{
mark[a[i]]=1;
}
for(int i=0;i<sizeof(b)/sizeof(b[0]);i++)
{
if(mark[b[i]]==1)
{
mark[b[i]]=2;
}
}
for(int i=0;i<1024;i++)
{
if(mark[i]==2)
printf("%d",i);
}
}