/* * 判断两个有序数组中是否存在相同的数字(要求时间复杂度为O(n)) */ #include<stdio.h> #include<stdlib.h> bool existthesame(int *a,int n1,int *b,int n2) { int i=0; int j=0; bool flag=false; while(i<n1&&j<n2) { if(*(a+i)==*(b+j)) { flag=true; break; } else if(*(a+i)>*(b+j))j++; else i++; } if(i==n1||j==n2)flag=false; return flag; } int main() { int a[]={1,4,7,8}; int b[]={2,5,6,9}; int n1=sizeof(a)/sizeof(a[0]); int n2=sizeof(b)/sizeof(b[0]); bool flag=existthesame(a,n1,b,n2); if(flag==true) { printf("两个有序数组中存在相同的数字!\n"); } else { printf("两个有序数组中不存在相同的数字!\n"); } return 0; }