码迷,mamicode.com
首页 > 其他好文 > 详细

Median of Two Sorted Arrays

时间:2015-07-08 22:31:18      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

Question:

There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

Solution:

 1 double findk(vector<int> nums1,vector<int> nums2,int k)
 2 {
 3     int M=nums1.size();
 4     int N=nums2.size();
 5     if(M>N) return findk(nums2,nums1,k);
 6     else
 7     {
 8         if(nums1.empty())  return nums2[k-1];
 9         if(k==1) return min(nums1[k-1],nums2[k-1]);
10         int ia=min(k/2,M);
11         int ib=k-ia;
12         if(nums1[ia-1]<nums2[ib-1])
13         {
14             vector<int> tmp1(nums1.begin()+ia,nums1.end());
15             vector<int> tmp2(nums2.begin(),nums2.end());
16             return findk(tmp1,tmp2,k-ia);
17         }
18         else if(nums1[ia-1]>nums2[ib-1])
19         {
20             vector<int> tmp1(nums1.begin(),nums1.end());
21             vector<int> tmp2(nums2.begin()+ib,nums2.end());
22             return findk(tmp1,tmp2,k-ib);
23         }
24         else 
25         {
26             return nums1[ia-1];
27         }
28     }
29 }
30 class Solution {
31 public:
32     double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
33 {
34     int M=nums1.size();
35     int N=nums2.size();
36     int total=M+N;
37     if(total%2!=0)
38         return findk(nums1,nums2,total/2+1);
39     else
40         return (findk(nums1,nums2,total/2)+findk(nums1,nums2,total/2+1))/2.0;
41 }
42 };

技术分享

 

Median of Two Sorted Arrays

标签:

原文地址:http://www.cnblogs.com/riden/p/4631436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!