码迷,mamicode.com
首页 > 编程语言 > 详细

LeetCode刷题-004两个排序数组的中位数

时间:2018-05-24 22:19:11      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:find   median   AC   span   public   col   中位数   double   sorted   

给定两个大小为 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两个排序数组的中位数

标签:find   median   AC   span   public   col   中位数   double   sorted   

原文地址:https://www.cnblogs.com/nkqlhqc/p/9085326.html

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