zoukankan      html  css  js  c++  java
  • 两个排序数组的中位数

    给定两个大小为 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 };
    本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 相关阅读:
    servlet 传值和取值问题
    .net 获取存储过程返回值和Output输出参数值
    游标使用
    java中直接根据Date获取明天的日期
    Linux通配符与特殊符号知识大全
    zabbix监控
    KVM介绍 虚拟化简史
    GFS文件系统
    Oracle JOB定时器
    IDEA JSP 不能使用EL表达式
  • 原文地址:https://www.cnblogs.com/nkqlhqc/p/9085326.html
Copyright © 2011-2022 走看看