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

Posted 梦醒时夜续

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题-004两个排序数组的中位数相关的知识,希望对你有一定的参考价值。

给定两个大小为 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两个排序数组的中位数的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode--004--寻找两个有序数组的中位数(java)

LeetCode刷题:第四题 寻找两个有序数组的中位数

Leetcode刷题4. 寻找两个正序数组的中位数

202006leetcode刷题记录

leetcode python 004

LeetCode-4. 两个排序数组的中位数(详解)