https://leetcode.com/problems/median-of-two-sorted-arrays/
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)).
Example 1:
nums1 = [1, 3] nums2 = [2] The median is 2.0
Example 2:
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5第一种思路:采用最暴力的方法,因为给的两个数组都已经排序了,也知道中位数是第几个,直接采用二分归并排序到中位数。
1 class Solution { 2 public: 3 double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { 4 vector<int> nums3; 5 int i=0,j=0,k=0; 6 int m =(nums1.size()+nums2.size()); 7 while(i<nums1.size()&&j<nums2.size()) { 8 if(nums1[i]<nums2[j]) 9 nums3.push_back(nums1[i++]); 10 else 11 nums3.push_back(nums2[j++]); 12 k++; 13 if(k>m/2) 14 { 15 if(m%2) 16 return nums3[k-1]; 17 else 18 return (nums3[k-1]+nums3[k-2])/2.0; 19 } 20 } 21 while(i<nums1.size()){ 22 nums3.push_back(nums1[i++]); 23 k++; 24 if(k>m/2) 25 { 26 if(m%2) 27 return nums3[k-1]; 28 else 29 return (nums3[k-1]+nums3[k-2])/2.0; 30 } 31 } 32 while(j<nums2.size()){ 33 nums3.push_back(nums2[j++]); 34 k++; 35 if(k>m/2) 36 { 37 if(m%2) 38 return nums3[k-1]; 39 else 40 return (nums3[k-1]+nums3[k-2])/2.0; 41 } 42 } 43 return 0 ; 44 } 45 };
在leetcode中时间为48ms。
来源:https://www.cnblogs.com/aiheshan/p/5695447.html