美文网首页
Median of Two Sorted Arrays--lee

Median of Two Sorted Arrays--lee

作者: palytoxin | 来源:发表于2015-11-19 21:33 被阅读0次

    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)).

    一开始写的可惜出错,边界情况判断不清,这并不是一个简单的问题。


    先来一个比较无脑的ruby黑魔法

    def find_median_sorted_arrays(a, b)
      c = (a + b).sort
      mid = c.size/2
      ( c.size.odd?) ? c[mid] : ((c[mid]+c[mid-1]).to_f/2)
    end
    
    

    下面是分治法,速度会快一点

    def find_median_sorted_arrays(a,b)
      len=a.size+b.size
      return find_kth(a,b,len/2+1) if len.odd? 
      (find_kth(a,b,len/2)+find_kth(a,b,len/2+1))*0.5
    end
    ## k>0
    def find_kth(a,b,k)   
      return find_kth(b,a,k) if a.size<b.size  #ensure a.size >= b.size
      return a[k-1] if b.size==0
      return a[0]>b[0] ? b[0] : a[0] if k==1
      lenb=[b.size,k/2].min
      lena=k-lenb
      return find_kth(a[lena..-1],b,k-lena) if a[lena-1]<b[lenb-1]
      find_kth(a,b[lenb..-1],k-lenb)
    end
    
    

    临界情况

    相关文章

      网友评论

          本文标题:Median of Two Sorted Arrays--lee

          本文链接:https://www.haomeiwen.com/subject/yuylhttx.html