Leetcode 4
o(log(m+n))的算法只写好了大框架,还没有对几个特殊情况进行编写,所以先不进行散发分析,暂时只发一个高运算复杂度的算法,和未完成的算法
高复杂度算法
def findMedian(nums1, nums2):
nums_t = nums1 + nums2
nums_t_s = sorted(nums_t)
l_s = len(nums_t_s)
index = (l_s - 1) // 2
if (l_s // 2 == 0):
return(nums_t_s[index])
else:
return ((nums_t_s[index]+ nums_t_s[index+1])/2.0)
未完成算法
def findMedian(nums1, nums2):
m , n = len(nums1) , len(nums2)
if m>n:
nums1 , nums2 , m , n = nums2 , nums1 , n , m
j_f , j_e = 0 , m
t_s = (m + n ) // 2
while True:
j_s = (j_f + j_e) // 2
i_s = t_s - j_s
if j_s > 0 and nums1[j_s-1] > nums2[i_s]:
j_e = j_s - 1
elif j_f < m and nums2[i_s-1] > nums1[j_s]:
j_f = j_s + 1
else:
if j_s == 0 or j_s == m:
d_l = nums2[i_s-1]
d_r = nums2[i_s]
else:
d_l = max(nums2[i_s-1] , nums1[j_s-1])
d_r = min(nums2[i_s] , nums1[j_s])
if (m + n)%2==0:
return (d_l+d_r)/2
else:
return d_l