双指针快乐解决
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxn 100
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
int *a,i,j,k;
double r;
a=(int *)malloc(sizeof(int)*(nums1Size+nums2Size));
for(i=0;i<nums1Size+nums2Size;i++){
a[i]=0;
}
i=0;j=0;k=0;
while(i<nums1Size&&j<nums2Size){
if(nums1[i]<nums2[j]){
a[k]=nums1[i];
i++;k++;
}else if(nums1[i]>nums2[j]){
a[k]=nums2[j];
j++;k++;
}else {
a[k++]=nums1[i++];
a[k++]=nums2[j++];
}
}
if(i<nums1Size){
while(i<nums1Size){
a[k++]=nums1[i++];
}
}else if(j<nums2Size){
while(j<nums2Size){
a[k++]=nums2[j++];
}
}
if(k%2==0){//偶数个
r=(a[k/2-1]+a[k/2])/2.0;
}else{
r=a[k/2];
}
return r;
}
int main(){
int len1=3,len2=3,a[maxn]={1,2,5},b[maxn]={6,9,7};
double num;
num=findMedianSortedArrays(a,len1,b,len2);
printf("%.1llf",num);
}