zoukankan      html  css  js  c++  java
  • 4. Median of Two Sorted Arrays

    4. 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
      int findkth(int a[],int aSize, int b[],int bSize,int k) //求解第k个小的数
        {
    
            int aPos,bPos;
            if(aSize>bSize)//保证a始终是较短序列
            {
                return findkth(b,bSize,a,aSize,k);
            }
            if(aSize==0)  //如果序列a空了,则直接返回b串的第k个数
                return b[k-1];
            if(k==1)
                return a[0]<b[0]?a[0]:b[0];
            aPos=k/2<aSize?k/2:aSize;
            bPos=k-aPos;
            if(a[aPos-1]==b[bPos-1])
            {
                return a[aPos-1];
            }
            else if(a[aPos-1]<b[bPos-1])
            {
                return findkth(a+aPos,aSize-aPos,b,bSize,k-aPos);
            }
            else
            {
                return findkth(a,aSize,b+bPos,bSize-bPos,k-bPos);
            }
    
        }
    
        double findMedianSortedArrays(int* nums1,int nums1Size,int* nums2,int nums2Size)
        {
            int num=nums1Size+nums2Size;
            if(num%2==0)
            {
                return (findkth(nums1,nums1Size,nums2,nums2Size,num/2)+findkth(nums1,nums1Size,nums2,nums2Size,num/2+1))/2.0;
            }
            else
            {
                return findkth(nums1,nums1Size,nums2,nums2Size,num/2+1)*1.0;
            }
        }
  • 相关阅读:
    自娱自乐
    项目冲刺(2)-第二、第三天
    项目冲刺(2)-第一天
    Beta版本冲刺计划及安排
    第一章 构造过程抽象
    python 学习2
    python 学习1
    ionic 初入门
    NodeJS学习
    软件工程实践总结作业——个人作业
  • 原文地址:https://www.cnblogs.com/dshn/p/9082632.html
Copyright © 2011-2022 走看看