Median of Two Sorted Arrays--leetcode

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

临界情况

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Description: There are two sorted arrays nums1 and nums2 ...
    CharlieGuo阅读 3,146评论 0 0
  • 我的女儿小名叫柚子! 很多人问,为什么叫柚子呢? 这缘于我爱看的一部动画片,我们这一家! 从上学时我便有个嗜好,一...
    森鱼阅读 3,873评论 0 3
  • 工作中遇到挑战了。 明天,我这个人微言轻的小科员就得带队到下面的县区督导工作了。问题在于,这个系统内是很看重级别的...
    乌卓阅读 2,812评论 5 3
  • 梦里经常回到初中课堂,课桌下有人握住了我捡橡皮的手... 在那情窦初开的年纪,我曾追逐过一个身影,可不知怎么梦里的...
    seeza阅读 2,383评论 0 0
  • 《试》 试探春情红杏闹; 挽留冬意白梅倾。
    自命飞皇Yoes阅读 1,482评论 0 1