Skip to content
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);
   }
}