leetcode 4. 兩個排序陣列的中位數 C語言版
阿新 • • 發佈:2018-11-11
採用時間複雜度O(n),空間複雜度為O(1)的遍歷演算法:
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) { int i=nums1Size+nums2Size,j,size=0,a=0,b=0,l=0; double s1,s2; if(i%2==0) j=i/2; else j=(i+1)/2; while(a<nums1Size||b<nums2Size) { if(a<nums1Size&&b<nums2Size) { if(nums1[a]<nums2[b]) { s1=nums1[a]; a++; l++; } else { s1=nums2[b]; b++; l++; } } else if(a<nums1Size&&b==nums2Size) { s1=nums1[a]; a++; l++; } else { s1=nums2[b]; b++; l++; } if(i%2==1) { if(l==j) break; } else { if(l==j) s2=s1; else if(l==j+1) { s1=(s1+s2)/2; break; } } } return s1; }