leetcode4

来源:互联网 发布:linux 中telnet命令 编辑:程序博客网 时间:2024/06/16 09:43

leetcode4

double findKth(int* nums1, int nums1Size, int* nums2, int nums2Size,int k){    if(nums1Size == 0)        return nums2[k-1];    if(nums1Size > nums2Size)        return findKth(nums2,nums2Size,nums1,nums1Size,k);    if(k==1)        return nums1[0]<nums2[0]? nums1[0]:nums2[0];    int i = nums1Size>k/2? k/2:nums1Size;    int j = k - i  ;    if(nums1[i-1] < nums2[j-1])        return findKth(nums1+i,nums1Size-i,nums2,nums2Size,k-i);    else if(nums1[i-1] > nums2[j-1])        return findKth(nums1,nums1Size,nums2+j,nums2Size-j,k-j);    else        return nums1[i-1];}double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {    int sum = nums1Size+nums2Size;    if(sum % 2 !=0)        return findKth(nums1,nums1Size,nums2,nums2Size,sum/2+1);    else        return (findKth(nums1,nums1Size,nums2,nums2Size,sum/2)+                findKth(nums1,nums1Size,nums2,nums2Size,sum/2+1))/2;}
思路:二分法

原创粉丝点击