今天第一次在LeetCode做hard级别的题目:Median of Two Sorted Arrays.
题目大意是这样的:给两个排好序的数组,让找出它们合成一个数组的时候的中位数。数组的长度分别为m,n,要求时间复杂度为O(log(m+n))。本来拿到这个题目,一眼看过去感觉有点熟悉,有点归并排序的影子。如果真是归并排序的话,这已经是最后一步。但是题目要求的时间复杂度是O(log(m+n)),而用归并的话基本上是m+n级别的。做出来不难,难的是控制这个时间复杂度。
折腾了半天,吭吭哧哧弄出一个solution,总体思路是找到较短的那个数组,找出它的中位数,然后根据该数可以每次删去较短数组长度的那么多的项,具体可以见下面代码。时间复杂度不好估计,但是应该<O(logm+logn),基本上可以认为是达到要求了吧。
我的代码:
#!/usr/bin/python
#coding=utf8
"""
# Author: qwqian
# Created Time : 2017-12-17 13:22:31
# File Name: medianOfTwoSortedArray.py
# Description: