1. 程式人生 > >LeetCode刷題-004兩個排序數組的中位數

LeetCode刷題-004兩個排序數組的中位數

AC size tor fin AR clas find 2.0 media

給定兩個大小為 m 和 n 的有序數組 nums1 和 nums2 。

請找出這兩個有序數組的中位數。要求算法的時間復雜度為 O(log (m+n)) 。

示例 1:
nums1 = [1, 3]
nums2 = [2]
中位數是 2.0

示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
中位數是 (2 + 3)/2 = 2.5

 1 class Solution {
 2 public:
 3 double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
 4 {
 5
int allnums = nums1.size() + nums2.size(); 6 int pos = allnums / 2; 7 int count = 0; 8 int p1 = 0, p2 = 0; 9 vector<int> save; 10 11 if (nums1.size() == 0 && nums2.size() == 0) return 0; 12 13 while (count <= pos) 14 { 15 if
((p1+1)>nums1.size()) 16 { 17 save.push_back(nums2[p2]); 18 p2++; 19 count++; 20 continue; 21 } 22 23 if ((p2+1)>nums2.size()) 24 { 25 save.push_back(nums1[p1]); 26 p1++; 27 count++;
28 continue; 29 } 30 31 if (nums1[p1] >= nums2[p2]) 32 { 33 save.push_back(nums2[p2]); 34 p2++; 35 count++; 36 } 37 else 38 { 39 save.push_back(nums1[p1]); 40 p1++; 41 count++; 42 } 43 44 } 45 46 if (allnums % 2 == 1) return save[save.size() - 1]; 47 else return (save[save.size() - 1] + save[save.size() - 2]) / (2.0); 48 } 49 };

LeetCode刷題-004兩個排序數組的中位數