zoukankan      html  css  js  c++  java
  • 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)).

    转换题意为找到第k个数,此题k=(m+n)/2

    如果时间复杂度o(k)可以接受的话,可以模拟合并,找到第k个数即可

    此处要求时间复杂度O(log (m+n)).基本可以确定希望我们二分。

    二分一般有两个角度,一个是对结果二分,缩小结果范围,让其逼近结果;令一个是对容器二分,缩小可选范围。

    这题可以用第一个角度,找第k个数,那么我们每次排除k/2个数,时间复杂度就是O(logk).

    代码:

    int min(int a,int b)
    {
        return a<b?a:b;
    }
    
    int findKth(int a[],int m,int b[],int n,int k)
        {
            if(m>n){//假设m总是小于等于n
                return findKth(b,n,a,m,k);
            }
            if(m==0){
                return b[k-1];
            }
            if(n==0){
                return a[k-1];
            }
            if(k==1){
                return min(a[0],b[0]);
            }
            int pa = min(k/2,m);
            int pb = k-pa;
            if(a[pa-1] < b[pb-1]){
                return findKth(a+pa,m-pa,b,n,k-pa);
            }else if(a[pa-1] > b[pb-1]){
                return findKth(a,m,b+pb,n-pb,k-pb);
            }else{
                return a[pa-1];
            }
        }
    
    double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
        if((nums1Size+nums2Size)&0x1){
            return findKth(nums1,nums1Size,nums2,nums2Size,(nums1Size+nums2Size)/2+1);
        }else{
            int res1 = findKth(nums1,nums1Size,nums2,nums2Size,(nums1Size+nums2Size)/2);
            int res2 = findKth(nums1,nums1Size,nums2,nums2Size,(nums1Size+nums2Size)/2+1);
            return (res1+res2)/2.0;
        }
    }

    参考:http://blog.csdn.net/yutianzuijin/article/details/11499917/

  • 相关阅读:
    HTML5学习笔记简明版(1):HTML5介绍与语法
    用margin还是用padding(1)——W3School CSS外边距合并
    Minimum Depth of Binary Tree
    118. Pascal's Triangle
    Convert Sorted Array to Binary Search Tree
    112. Path Sum
    Balanced Binary Tree
    centos 7下nginx搭建流媒体服务器【动态添加模块】
    Java内存泄漏
    Quartz的job中注入的services接口为空的解决办法
  • 原文地址:https://www.cnblogs.com/zengzy/p/5013561.html
Copyright © 2011-2022 走看看