1- int findKth (int * nums1 , int m , int i , int * nums2 , int n , int j , int k ) {
2- if (i >= m )
3- return nums2 [j + k - 1 ];
4- if (j >= n )
5- return nums1 [i + k - 1 ];
6- if (k == 1 )
7- return nums1 [i ] < nums2 [j ] ? nums1 [i ] : nums2 [j ];
1+ int findKth (int * nums1 , int m , int i , int * nums2 , int n , int j , int k ) {
2+ if (i >= m )
3+ return nums2 [j + k - 1 ];
4+ if (j >= n )
5+ return nums1 [i + k - 1 ];
6+ if (k == 1 )
7+ return nums1 [i ] < nums2 [j ] ? nums1 [i ] : nums2 [j ];
88
9- int p = k / 2 ;
9+ int p = k / 2 ;
1010
11- int x = (i + p - 1 < m ) ? nums1 [i + p - 1 ] : INT_MAX ;
12- int y = (j + p - 1 < n ) ? nums2 [j + p - 1 ] : INT_MAX ;
11+ int x = (i + p - 1 < m ) ? nums1 [i + p - 1 ] : INT_MAX ;
12+ int y = (j + p - 1 < n ) ? nums2 [j + p - 1 ] : INT_MAX ;
1313
14- if (x < y )
15- return findKth (nums1 , m , i + p , nums2 , n , j , k - p );
16- else
17- return findKth (nums1 , m , i , nums2 , n , j + p , k - p );
14+ if (x < y )
15+ return findKth (nums1 , m , i + p , nums2 , n , j , k - p );
16+ else
17+ return findKth (nums1 , m , i , nums2 , n , j + p , k - p );
1818}
1919
20- double findMedianSortedArrays (int * nums1 , int m , int * nums2 , int n ) {
21- int total = m + n ;
22- int a = findKth (nums1 , m , 0 , nums2 , n , 0 , (total + 1 ) / 2 );
23- int b = findKth (nums1 , m , 0 , nums2 , n , 0 , (total + 2 ) / 2 );
24- return (a + b ) / 2.0 ;
25- }
20+ double findMedianSortedArrays (int * nums1 , int m , int * nums2 , int n ) {
21+ int total = m + n ;
22+ int a = findKth (nums1 , m , 0 , nums2 , n , 0 , (total + 1 ) / 2 );
23+ int b = findKth (nums1 , m , 0 , nums2 , n , 0 , (total + 2 ) / 2 );
24+ return (a + b ) / 2.0 ;
25+ }
0 commit comments